使用BeanFactoryPostProcessor覆盖FactoryBean参数

时间:2013-08-06 07:02:58

标签: spring factory

我需要在经典的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>

0 个答案:

没有答案