@EnableAsync
注解启用了 Spring 异步方法执行功能,在 Spring Framework API 中有详细介绍。
@EnableAsync
默认启动流程:
1 搜索关联的线程池定义:上下文中唯一的 TaskExecutor
实例,或一个名为 taskExecutor
的 java.util.concurrent.Executor
实例;
2 如果以上都没找到,则会使用 SimpleAsyncTaskExecutor
处理异步方法调用。
注意:具有 void
返回类型的带注释方法不能将任何异常发送回调用者,默认情况下此类未捕获异常只会被记录日志。
定制 @EnableAsync
启动行为:
1 实现 AsyncConfigurer
接口
2 实现 getAsyncExecutor()
方法自定义 java.util.concurrent.Executor
3 实现 getAsyncUncaughtExceptionHandler()
方法自定义 AsyncUncaughtExceptionHandler
示例:修改 AsyncConfig
配置类实现