我在Spring应用程序中使用简单的JDBCTemplate .
我有多个DataSource,我想根据包名称应用于我的DAO类 .
我现在正在做的是以下内容:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/a.jdbc" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.pui.PuiJdbcTransactionManager">
<constructor-arg ref="dataSource" />
</bean>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/a.jdbc2" />
</bean>
<bean id="transactionManager2"
class="org.springframework.jdbc.datasource.pui.PuiJdbcTransactionManager">
<constructor-arg ref="dataSource2" />
</bean>
我定义了两个dataSources和两个transactionManagers,然后我在每个DAO中设置了dataSource:
@Autowired
@Qualifier("dataSource2")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
它的工作原理,但我想,要知道是否存在更好的方法来进行设置,主要是因为交易的,因为他们总是被在“数据源” beans 创建的,从来没有过“dataSource2”之一 .
也许一个解决方案是从Spring覆盖TransactionInterceptor类,并带来一个自定义的解决方案来获取正确的TransactionManager ...