用于在Spring中连接事务管理器的典型XML如下所示:
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource" />
</bean>
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
.... properties go here ....
</bean>
Run Code Online (Sandbox Code Playgroud)
如何用代码完成同样的事情?
@Configuration
public class MyConfig {
@Bean
public DataSource myDataSource() {
return new DataSource(); /// and set properties, etc.
}
@Bean
public DataSourceTransactionManager txManager() {
--> What goes here? <--
}
}
Run Code Online (Sandbox Code Playgroud)
具体来说,如何通过代码将txManager连接到myDataSource单例?
由于DataSourceTransactionManager有一个构造函数DataSource,你可以执行以下操作(否则你需要调用setDataSource()):
@Bean
public DataSourceTransactionManager txManager() {
return new DataSourceTransactionManager(myDataSource());
}
Run Code Online (Sandbox Code Playgroud)
也可以看看:
也可以使用多个transactionManager
@Configuration
public class MyConfig {
@Bean
public DataSource myDataSource1() {
return new DataSource(); /// and set properties, etc.
}
@Bean
@Qualifier("txManager1")
public DataSourceTransactionManager txManager1() {
return new DataSourceTransactionManager(myDataSource1());
}
@Bean
public DataSource myDataSource2() {
return new DataSource(); /// and set properties, etc.
}
@Bean
@Qualifier("txManager2")
public DataSourceTransactionManager txManager2() {
return new DataSourceTransactionManager(myDataSource2());
}
}
Run Code Online (Sandbox Code Playgroud)
然后当使用@Transactional时你可以定义你想要的transactionManager:
@Transactional("txManager1")
public Object getSomeData(){
...
}
@Transactional("txManager2")
public Object getSomeOtherData(){
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9968 次 |
| 最近记录: |