我需要AnnotationSessionFactoryBean
在经典的 spring xml 上下文中覆盖 an 的嵌套属性。由于它是一个嵌套属性(那个HibernateProperties
),我不能使用PropertyOverriderConfigurer
我实现的解决方案是加载上下文而不刷新它并添加一个BeanFactoryPostProcessor
检索对的引用FactoryBean
并根据我的要求更改属性。然而,结果并不是我所期望的。看起来像是在执行之前FactoryBean
创建的,并且属性在 Bean 上发生了变异,但在已经存在的 Bean 上没有发生变异,它是用旧值创建的Bean
BeanFactoryPostProcessor
FactoryBean
是否有一种机制可以在创建 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>