Java 我有一个bean列表,当属性文件没有值时,我不想创建这些bean,如何实现这一点?
我希望仅当配置文件中设置了jdbc.url jdbc.username jdbc.password值时,才能创建以下所有bean 如何通过基于xml的spring实现这一点 这里testODSDataSource是主bean,下面的所有bean都依赖于它,因此必须根据属性创建所有bean或不创建任何bean,如果jdbc.url为空,则不应创建Java 我有一个bean列表,当属性文件没有值时,我不想创建这些bean,如何实现这一点?,java,spring,conditional-statements,javabeans,Java,Spring,Conditional Statements,Javabeans,我希望仅当配置文件中设置了jdbc.url jdbc.username jdbc.password值时,才能创建以下所有bean 如何通过基于xml的spring实现这一点 这里testODSDataSource是主bean,下面的所有bean都依赖于它,因此必须根据属性创建所有bean或不创建任何bean,如果jdbc.url为空,则不应创建 <beans> <bean id="testODSDataSource" class="com.comp
<beans>
<bean id="testODSDataSource" class="com.company.abc.datasource.pool.WrappedDataSource" scope="prototype"
destroy-method="shutdown" lazy-init="true" >
<property name="wrappedDataSource" >
<!--Using an inner bean here, no need to expose the factory result -->
<bean
class="com.company.abc.datasource.pool.WrappedDataSourceFactory">
<property name="jdbcUrl" value="${jdbc.url:#{null}}" />
<property name="jdbcUser" value="${jdbc.username:#{null}}" />
<property name="jdbcPassword" value="${jdbc.password:#{null}}" />
</bean>
</property>
<property name="minPoolSize" value="5" />
<property name="initialPoolSize" value="10" />
<property name="maxPoolSize" value="${.jdbc.maxPoolSize}" />
<property name="maxPoolBehaviour" value="${.jdbc.maxPoolBehaviour}" />
<property name="maxIdleTime" value="300" />
<!--Cycle every minute the clean up -->
<property name="maintenanceCycle" value="60" />
<property name="acquireRetryAttempts" value="${.jdbc.acquireRetryAttempts}" />
<property name="acquireRetryDelay" value="${.jdbc.acquireRetryDelay}" />
<property name="sqlTestQuery" value="" />
</bean>
<bean id="testODSRepositoryInfo" class="com.company.abc.repositoryutils.common.RepositoryInformation" lazy-init="true" >
<description>
Holds the information about the meta-data repository. The information can be directly accessed within the bean configuration
using Spring Expression Language (http://docs.spring.io/spring/docs/3.0.0.M3/spring-framework-reference/html/ch07s04.html).
For example: #{testODSRepositoryInfo.getRepositoryType()}
</description>
<constructor-arg name="metaType" value="ODS"/>
<property name="dataSource" ref="testODSDataSource"/>
<property name="jdbcUrl" value="${jdbc.url:#{null}}"/>
</bean>
<bean id="testODSSequenceGenerator" class="com.company.abc.persistency.generator.SequenceGeneratorFactory" lazy-init="true"
>
<property name="datasource" ref="testODSDataSource" />
<property name="hibernateDialectClassName" value="#{testODSRepositoryInfo.getDialectClassName()}" />
</bean>
<bean id="testODSHibernateSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="true">
<property name="dataSource" ref="testODSDataSource" />
<property name="hibernateProperties">
<bean class="com.company.abc.utils.spring.MapToPropertiesConverter">
<property name="properties">
<map key-type="java.lang.String" value-type="java.lang.String">
<entry key="hibernate.dialect" value="#{testODSRepositoryInfo.getDialectClassName()}"/>
<entry key="net.sf.ehcache.configurationResourceName" value="#{testODSRepositoryInfo.getCacheConfiguration()}"/>
</map>
</property>
</bean>
</property>
<property name="configLocation" value="classpath:META-INF/hibernate.ods.cfg.xml" />
</bean>
<!--Definition of the different ODS persister beans-->
<bean id="testODSAbstractPersistencyBean" class="com.company.abc.persistency.AbstractPersister" abstract="true"
lazy-init="true">
<description>
The bean has to be defined abstract, as otherwise the Spring Container may accidentally try to instantiate it.
Other OSD persistency beans should use this bean as template.
</description>
<property name="sessionFactory" ref="testODSHibernateSessionFactory" />
</bean>
<bean id="testODSSLAViolationPersister" parent="testODSAbstractPersistencyBean"
class="com.company.abc.persistency.ods.impl.ODSSLAViolationPersisterImpl" lazy-init="true" >
<property name="repositoryType" value="#{testODSRepositoryInfo.getRepositoryType()}"/>
</bean>
<bean id="testODSEventPersister" parent="testODSAbstractPersistencyBean"
class="com.company.abc.persistency.ods.impl.ODSEventPersisterImpl" lazy-init="true" >
<property name="repositoryType" value="#{testODSRepositoryInfo.getRepositoryType()}"/>
</bean>
<bean id="testOdsTxManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" lazy-init="true" >
<property name="sessionFactory" ref="testODSHibernateSessionFactory" />
<property name="dataSource" ref="testODSDataSource"/>
</bean>
<bean id="testDashboardStatisticsService"
class="com.company.abc.persistency.event.impl.OdsDashboardEventsServiceImpl" lazy-init="true" >
<property name="odsEventPersister" ref="testODSEventPersister"/>
<property name="odsSLAViolationPersister" ref="testODSSLAViolationPersister"/>
</bean>
</beans>
保存有关元数据存储库的信息。这些信息可以在bean配置中直接访问
使用Spring表达式语言(http://docs.spring.io/spring/docs/3.0.0.M3/spring-framework-reference/html/ch07s04.html).
例如:#{testODSRepositoryInfo.getRepositoryType()}
bean必须定义为抽象的,否则Spring容器可能会意外地尝试实例化它。
其他OSD持久性bean应该使用这个bean作为模板。