我是 Spring 新手。
我有多个数据库,但在任何给定时间都会打开一个数据库,具体取决于哪个数据库用户选择。所以我有一个 bean 定义如下。所以我的问题是,如果我使用下面给定的 bean,如何实例化数据源用户选择并在我的类中使用它。任何想法将不胜感激。
<bean id="dataSources" class="java.util.TreeMap">
<constructor-arg>
<map>
<entry key="dp1www" value-ref="dataSourceDp1www" />
<entry key="dp2www" value-ref="dataSourceDp2www" />
<entry key="sp0www" value-ref="dataSourceSp0www" />
<entry key="sp1www" value-ref="dataSourceSp1www" />
<entry key="sp2www" value-ref="dataSourceSp2www" />
</map>
</constructor-arg>
</bean>
<bean id="dataSourceDp1www" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:oracle:thin:@sf1-hab-ppb-ww.home.com:1525/dp1www1.home.com" />
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="select" />
<property name="password" value="######" />
</bean>
<bean id="dataSourceDp2www" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:oracle:thin:@sf1-hbl-ppb-ww.home.com:1525/dp2www1.home.com" />
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="select" />
<property name="password" value="######" />
</bean>
<bean id="dataSourceSp0www" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:oracle:thin:@sf1-hbl-ppb-ww.home.com:1525/sp0www1.home.com" />
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="select" />
<property name="password" value="######" />
</bean>
<bean id="dataSourceSp1www" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="jdbc:oracle:thin:@sf1-hab-ppb-ww.home.com:1525/sp1www1.home.com" />
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="username" value="select" />
<property name="password" value="######" />
</bean>
最佳答案
您可以只使用@Autowired
注释来注入(inject)TreeMap
实例:
@Autowired
private TreeMap<String, DataSource> dataSources;
....
DataSource dataSource = dataSources.get("dp1www");
或者您可以直接注入(inject)特定数据源,甚至无需创建TreeMap
@Autowired
private DataSource dataSourceDp1www;
关于java - 如何从数据源列表实例化数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813284/