@EnableAsync 注解啟用了 Spring 異步方法執(zhí)行功能,在 Spring Framework API 中有詳細(xì)介紹。
@EnableAsync 默認(rèn)啟動流程:
1 搜索關(guān)聯(lián)的線程池定義:上下文中唯一的 TaskExecutor 實例,或一個名為 taskExecutor 的 java.util.concurrent.Executor 實例;
2 如果以上都沒找到,則會使用 SimpleAsyncTaskExecutor 處理異步方法調(diào)用。
注意:具有 void 返回類型的帶注釋方法不能將任何異常發(fā)送回調(diào)用者,默認(rèn)情況下此類未捕獲異常只會被記錄日志。
定制 @EnableAsync 啟動行為:
1 實現(xiàn) AsyncConfigurer 接口
2 實現(xiàn) getAsyncExecutor() 方法自定義 java.util.concurrent.Executor
3 實現(xiàn) getAsyncUncaughtExceptionHandler() 方法自定義 AsyncUncaughtExceptionHandler
示例:修改 AsyncConfig 配置類實現(xiàn)