为什么在spring 3.1中将id属性改为xsd:string type?

时间:2014-01-27 05:14:26

标签: spring

当我将id值写为重复时,spring 3.0的问题是什么,然后我们将获得saxParseException,但是使用spring 3.1我们将获得springcontainer的异常, springcotainer或saxparserException异常是异常引发异常的优点是什么?那么为什么它们将id作为xsd-string到位id id datatype ??

1 个答案:

答案 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字段中工作。)