0
我有兩個數據源是相同的結構,但沒有在他們的數據。 我的應用程序必須同時處理它們兩個。 我有看起來像這樣的控制器,服務器,dao結構。春季多個transactionmanagers類似的數據源
控制器型號名稱:
@Controller
public abstract class MyFancyControllerModell{
private MyService service;
public MyFancyControllerModell (MyService service){
this.service = service;
}
@RequestMapping(....)
public void editSomeData(String data){....}
}
控制器實現:
@Controller
@RequestMapping(...)
public class MyControllerImpl1 extends MyFancyControllerModell{
@Autowired
public MyControllerImpl1(@Qualifier("myServiceInstance1") MyService service){
super(service);
}
}
@Controller
@RequestMapping(...)
public class MyControllerImpl2 extends MyFancyControllerModell{
@Autowired
public MyControllerImpl2(@Qualifier("myServiceInstance2") MyService service){
super(service);
}
}
,服務:
public class MyService{
private MyDao myDao;
public MyService(MyDao myDao){
this.myDao = myDao;
}
@Transactional
public void editSomeData(String data){...}
}
我創造我的配置類中的豆類是這樣的:
private DataSource lookupDataSource(final String jndiName) {
final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
dsLookup.setResourceRef(true);
return dsLookup.getDataSource(jndiName);
}
@Bean
public DataSource dataSource1(){
return lookUpDataSource("dataSource1");
}
@Bean
public DataSource dataSource2(){
return lookUpDataSource("dataSource2");
}
@Bean
public MyService myServiceInstance1(@Qualifier("dataSource1") DataSource dataSource){
return new(MyService(new MyDao(dataSource))));
}
@Bean
public MyService myServiceInstance1(@Qualifier("dataSource1") DataSource dataSource){
return new(MyService(new MyDao(dataSource)));
}
我的問題是,是否有可能爲兩個數據源創建transactionmanagers,而無需在服務層中聲明使用哪個transactionmanager?
我試圖創建它們就像服務的bean,但沒有奏效。
https://stackoverflow.com/q/1961566/7504001 –
感謝。目前我們的tomcats無法處理JTA。所以這個想法是要找到另一種方式。但它似乎是JTA是唯一實用的解決方案。所以我們必須重新配置我們的tomcats。 –