当我将id值写为重复时,spring 3.0的问题是什么,然后我们将获得saxParseException,但是使用spring 3.1我们将获得springcontainer的异常, springcotainer或saxparserException异常是异常引发异常的优点是什么?那么为什么它们将id作为xsd-string到位id id datatype ??
答案 0 :(得分:1)
由于the introduction of profiles,Spring 3.1将id从xsd:ID
类型更改为string
。
要使配置文件在xml中运行,您可以添加多个beans
元素,这些元素都在特定配置文件中激活。现在,如果id
属性仍为xsd:ID
类型,则会失败。
<beans>
<bean id="jdbcTemplate" class="JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<beans profile="test">
<bean id="dataSource">
</bean>
</beans>
<beans profile="prod">
<jee:jndi-lookup id="dataSource" />
</beans>
</beans>
如果id仍为xsd:ID
,则上面的(伪)代码片段将无效,因为其中一个约束是它必须是唯一的。但dataSource
有两次。要解决这个问题,需要string
。
而不是(正如我之前评论的那样)允许占位符在id字段中工作。)