分析: 可以发现其是实现了AsyncTaskExecutor, 用独立的线程来执行具体的每个方法操作。在createCallable和createWrapperRunnable中,定义了异常的处理方式和机制。
handle()就是未来我们需要关注的异常处理的地方。
xml配置文件中的内容:
也可以使用注解的形式将其配置注册到bean中。
5. @Async调用中的事务处理机制在@Async标注的方法,同时也使用@Transactional进行标注;在其调用数据库操作之时,将无法产生事务管理的控制,原因就在于其是基于异步处理的操作。
那该如何给这些操作添加事务管理呢?
可以将需要事务管理操作的方法放置到异步方法内部,在内部被调用的方法上添加@Transactional
示例:方法A, 使用了@Async/@Transactional来标注,但是无法产生事务控制的目的。
方法B, 使用了@Async来标注,B中调用了C、D,C/D分别使用@Transactional做了标注,则可实现事务控制的目的。
6. 参考文章:[1]、https://www.cnblogs.com/wihainan/p/6516858.html
[2]、