我使用的是Spring 3.2.2版本,
我遇到的问题就像我使用@Transactional
和@Async
时一样无效。
示例代码:
在大班:
@Override
@Transactional(value = "transactionManager")
public response process(inputparams) throws ReportServiceException {
List<Future<Response>> futures=new ArrayList<Future<Response>>();
for (Iterating for 4 times lets assume) {
Future<Response> future =publisher.saveLogic(input);
futures.add(future);
}
// After initiating threads done in above loop then
// Iterating all futures and waiting till all threads done
}
//在Publisher类中:
@Async("reportWorkManagerTaskExecutor")
public Future<ReportResponse> saveReport(ReportSaveRequestDTO reportSaveRequestDTO){
//save logic to db
return new AsyncResult<Response>(null);
}
//在xml文件配置中,如
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="reportDataSource" />
</bean>
<tx:annotation-driven />
<task:annotation-driven executor="reportWorkManagerTaskExecutor"/>
当我从@Async
方法中删除saveRepor
(线程概念)时,它的工作非常完美。
但是当我添加它不起作用。
我尝试为@Transaction
方法添加saveReport
,但仍然没有用。