【问题标题】:Setting property reference for a bean programmatically以编程方式设置 bean 的属性引用
【发布时间】:2013-04-15 06:21:36
【问题描述】:

现在我正在使用以下 bean 条目

<bean id="Service" >
    <property name="target">
            <bean class="someClass" lazy-init="false">
                <property name="SessionFactory1"><ref bean="SessionFactory1"/></property>
                <property name="SessionFactory2"><ref bean="SessionFactory2"/></property>
                <property name="SessionFactory3"><ref bean="SessionFactory3"/></property>
           </bean>
        </property>

</bean>

现在的要求是首先检查哪些会话工厂有一个活动的数据源,并且只将那些包含在上面的 bean 定义中。这样,如果我们尝试使用非活动数据源初始化会话工厂,应用程序就不会中断。

sessionfactory 初始化将通过为会话工厂使用单独的配置 xml 并仅加载具有活动数据源的那些来进行。

请帮助如何实现这一目标。

【问题讨论】:

  • 我尝试按照您建议的方法进行操作。如果配置出现问题,它确实允许我捕获异常。但是,仍然无法弄清楚如何使用 afterPropertiesSet 以编程方式设置 bean 属性。或者继续使用正确配置的会话工厂。我对弹簧很陌生。所以,请不要介意愚蠢的怀疑
  • 另外,从我的问题可以看出。我尝试添加的属性引用了会话工厂 amd 不是字符串的键值对

标签: spring hibernate sessionfactory


【解决方案1】:

您可以使用 Spring InitializingBean 接口,这使您可以实现 afterPropertiesSet() 方法。此方法将在 Spring 实例化您的类后执行,您可以检查您的会话工厂是否可用。

InitializingBean:由 BeanFactory 设置所有属性后需要做出反应的接口实现:例如,执行自定义初始化,或仅检查所有强制属性是否已设置。

链接:Spring InitializingBean

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 2017-08-05
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2023-01-03
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多