0

第一:是的,我看过文档

他们告诉我如何创建 util:list、util:set 等。我明白了。

但是,我有一个带有应用程序上下文的库,其中包含一个 bean(特别是 Hibernate Session Factory bean),其中包含我想要覆盖选项的设置。几个服务使用这个库,并不是每个服务都需要相同的注释类。

会话工厂 bean 目前看起来像这样:

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
            <prop key="hibernate.jdbc.use_get_generated_keys">true</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
        </props>
    </property>
    <property name="annotatedClasses" >

        <list>
            <value>com.example.model.Person</value>
            <value>com.example.model.Section</value>
        </list>
    </property>
</bean>

我想用这样定义的列表替换 annotatedClasses 属性(在使用库的服务的应用程序上下文中):

<util:list id="serviceSpecificAnnotatedClasses">
    <value>com.example.model.Person</value>
    <value>com.example.model.Section</value>
    <value>com.example.model.Location</value>
</util:list>

我是否只需将 util:list 命名为“annotatedClasses”,它就会被自动覆盖?

4

1 回答 1

1

不,它不会自动被覆盖。默认情况下,您必须声明 bean 并连接它。

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
            <prop key="hibernate.jdbc.use_get_generated_keys">true</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
        </props>
    </property>
    <property name="annotatedClasses" ref="annotatedClasses" />
</bean>

<util:list id="annotatedClasses">
    <value>com.example.model.Person</value>
    <value>com.example.model.Section</value>
    <value>com.example.model.Location</value>
</util:list>

没有其他人可以简单地覆盖该列表annotatedClasses

但是为什么不简单地使用属性占位符来指定类并将逗号分隔的列表添加到属性文件中呢?

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
            <prop key="hibernate.jdbc.use_get_generated_keys">true</prop>
            <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
        </props>
    </property>
    <property name="annotatedClasses" value="${service.annotatedClasses}" />
</bean>

假设每个服务都有自己的配置属性文件,他们只需要添加service.annotatedClasses的值。

于 2013-09-11T11:40:43.380 回答