spring bean可选属性

时间:2017-04-18 07:51:57

标签: spring dependency-injection

我在我的spring配置中使用tomcat中定义的数据源,如下面的xml所示。

有时可能无法在tomcat的context.xml中定义此数据源。 在这种情况下,由于找不到myDS,因此上下文初始化失败。

是否可以将数据源配置为可选,以便不影响应用程序初始化? 访问此数据源时可能会出现运行时错误,这是可以接受的

<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/myDS"/>
    </bean>

<bean id="myEntityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="myDataSource" />
        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
        <property name="packagesToScan" value="com..XX.XX" />
        <property name="persistenceUnitName" value="myPU" />

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="#{systemProperties['showSql'] == null ? 'true' : systemProperties['showSql'] }" />
            </bean>
        </property>

        <property name="persistenceUnitPostProcessors">
            <list>
                <ref bean="wrkflw-punitpostprocessor" />
            </list>
        </property>

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">#{systemProperties['dbDialect']}</prop>
            </props>
        </property>
    </bean>

由于 Muhad

1 个答案:

答案 0 :(得分:0)

您可以检查DelegatingDataSource,您可以封装逻辑以在其实例化中从JNDI加载数据源。对于您的应用程序,总会有DataSource,但在某些情况下(无论何时无法从DataSource加载JNDI),都没有委派。