0
如果在不同的数据库中执行第二个更新语句时是否有任何错误,那么我需要回滚第一个语句。 我不想使用EntityManager,因为我已经在所有其他代码中使用了JdbcTemplate。 如果我使用@Transactional与限定符它完美的作品,但我希望@Transactional应该适用于这两个数据库。如何在spring引导中使用具有jdbcTemplate的多个数据源进行单个事务?
我的代码片段如下:
**DatasourceConfig.xml**
//Datasource for **DB2** database
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfigLmsDataSource" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
scope="singleton" primary="true">
<property name="dataSource" ref="dataSource" />
</bean>
//Datasource for **Mysql** Database database
<bean id="dataSource1" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfigLmsDataSource1" />
</bean>
<bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource1"/>
</bean>
<bean id="transactionManager1"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
scope="singleton" primary="true">
<property name="dataSource" ref="dataSource1" />
</bean>
//Inside service class
**MyService.java**
@Autowired("jdbcTemplate")
JdbcTemplate jdbcTemplate;
@Autowired("jdbcTemplate1")
JdbcTemplate jdbcTemplate1;
@Transactional
public void modifyDB()
{
jdbcTemplate.update("Update query for table in DB2 database");
jdbcTemplate1.update("Update query for table in MySql database");
}
这个职位没有解释我怎么可以配置多个数据源的,多的JdbcTemplate的正确。如果你有其他的完整例子的链接将帮助我很多。谢谢.. –