Spring 事务管理器和数据源 Java 配置方式来传递相同的 bean id 而无需创建新实例
Spring Transaction Manager and DataSource Java Config way to pass same bean id without creating a new instance
目标
我想在我的数据源上引入事务管理。
也在寻找为事务管理器使用相同数据源实例的正确方法。我的要求是指定 Java 配置方式将 DS 的 "Same instance" 传递给事务管理器。理解有误请指正
在我的例子中,我有一个数据源和类型自动提交 false
,并且通过使用下面指定的事务管理器,我想 commit/rollback 一个事务(例如更新一个 operation/Revert更新操作 --- 当交易中出现 error/no 错误时)。
但是,在调试时我注意到当我使用下面指定的 java 配置时,我得到了两个不同的数据源实例并且 trx.commit()
不起作用。
程序化事务管理
(https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch10s06.html)
@Bean
public DataSource dataSource() {
return getMyDataSource(); //new instance of datasource.//this datasource is autocommit-false
}
@Bean
public DataSourceTransactionManage trxManager() {
return getTransationManage(dataSource()); // this creates another instance of dataSource
}
非常感谢这方面的任何帮助。
编辑:-
我在 Spring 中使用 Mybatis。基本上,我必须正确配置 DataSouce。以下链接很有用。
[Pass parameters dynamically to Spring beans ][1] [Mybatis Transaction
Management CTM and PTM ][2] [Spring Transaction Management Notes
][3] [Spring & JTA NOtes][4]
[1]:
[2]: http://www.mybatis.org/spring/transactions.html
[3]: https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch10s06.html
[4]: https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html#transaction
要回用 dataSource
的同一个实例,你怎么做:
@Bean
@Autowired
public DataSourceTransactionManage trxManager(DataSource dataSource) {
return getTransationManage(dataSource);
}
目标 我想在我的数据源上引入事务管理。
也在寻找为事务管理器使用相同数据源实例的正确方法。我的要求是指定 Java 配置方式将 DS 的 "Same instance" 传递给事务管理器。理解有误请指正
在我的例子中,我有一个数据源和类型自动提交 false
,并且通过使用下面指定的事务管理器,我想 commit/rollback 一个事务(例如更新一个 operation/Revert更新操作 --- 当交易中出现 error/no 错误时)。
但是,在调试时我注意到当我使用下面指定的 java 配置时,我得到了两个不同的数据源实例并且 trx.commit()
不起作用。
程序化事务管理 (https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch10s06.html)
@Bean
public DataSource dataSource() {
return getMyDataSource(); //new instance of datasource.//this datasource is autocommit-false
}
@Bean
public DataSourceTransactionManage trxManager() {
return getTransationManage(dataSource()); // this creates another instance of dataSource
}
非常感谢这方面的任何帮助。
编辑:- 我在 Spring 中使用 Mybatis。基本上,我必须正确配置 DataSouce。以下链接很有用。
[Pass parameters dynamically to Spring beans ][1] [Mybatis Transaction Management CTM and PTM ][2] [Spring Transaction Management Notes ][3] [Spring & JTA NOtes][4]
[1]:
[2]: http://www.mybatis.org/spring/transactions.html
[3]: https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch10s06.html
[4]: https://docs.spring.io/spring/docs/current/spring-framework-reference/data-access.html#transaction
要回用 dataSource
的同一个实例,你怎么做:
@Bean
@Autowired
public DataSourceTransactionManage trxManager(DataSource dataSource) {
return getTransationManage(dataSource);
}