,鉴于可以如下构建数据源bean:
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url2}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="dataSource3" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url3}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
有没有办法获得所有这些数据源的集合,而无需通过其标识符明确引用豆类?例如getBean(" dataSource3")。容器或应用程序上下文在这里是否提供任何帮助?
从本质上讲,给定一个已经定义的所有bean的配置文件,在春季可以实现吗?
Collection<DataSource> getAllRegisteredDataSources();
非常感谢
是的,您可以采用两种方法来解决此问题。
第一种方法,基本方法是创建主配置和自动线程其他配置,并通过自动连接上下文您可以构建数据集合的集合
@Configuration
@Import({ DataSourceAConfig.class }) // Import additional configuration files as required
public class MasterConfig {
@Autowired DataSourceAConfig dataSourceAConfigContext;
@Bean public List<DataSource> getAllDataSources(){
DataSource dataSourceA = dataSourceAConfigContext.getDataSourceBean()
// Add data in sequentially way, one after the other
return Arrays.asList(dataSourceA);
}
}
第二种方法;我建议的方法是查看使用Spring Boot应用程序(尤其是指标周围的启动程序)的执行器服务。
http://docs.spring.io/spring-boot/docs/current/referent/Reference/html/production-readin-dready-endpoints.html
http://docs.spring.io/spring-boot/docs/current/referent/referent/html/production-redact--ready-metrics.html
他们提供了超出活动数据源数量的其他信息;包括资源利用和健康检查。
希望它有帮助。