0

我需要AnnotationSessionFactoryBean在经典的 spring xml 上下文中覆盖 an 的嵌套属性。由于它是一个嵌套属性(那个HibernateProperties),我不能使用PropertyOverriderConfigurer

我实现的解决方案是加载上下文而不刷新它并添加一个BeanFactoryPostProcessor检索对的引用FactoryBean并根据我的要求更改属性。然而,结果并不是我所期望的。看起来像是在执行之前FactoryBean创建的,并且属性在 Bean 上发生了变异,但在已经存在的 Bean 上没有发生变异,它是用旧值创建的BeanBeanFactoryPostProcessorFactoryBean

是否有一种机制可以在创建 bean之前FactoryBean以编程方式覆盖某些属性?这是产生问题FactoryBean

<bean id="startupSessionFactory"
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="annotatedClasses">
        <list>
            <value>org.jfin.date.Period</value>
        </list>
     </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
            <prop key="hibernate.jdbc.use_get_generated_keys">true</prop>
            <prop key="hibernate.cache.use_second_level_cache">false</prop>
            <prop key="hibernate.cache.use_query_cache">false</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.connection.autocommit">false</prop>
        </props>
    </property>
</bean>
4

0 回答 0