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