SpringBoot内置的默认的Executor来执行异步任务,只需要增加@EnableAsync
注解,并在需要异步执行的方法上增加@Async
注解,非常方便。同时,Spring还提供了内置的调度器,通过增加@EnableScheduling
注解启用,在调度任务的执行方法上使用@Scheduled
注解定义调度参数。
如果需要同时使用这两个特性,还需要自定义Executor的话,仅使用AsyncConfigurer
接口定义Executor类型的Bean会导致Bean声明重复,进而无法实例化Bean。
可以使用如下方式实现定制,并且让异步任务和调度任务共享同一个线程池。
1 | // AsyncExecutorConfiguration.java |
这里创建了两个文件分别提供Async和Scheduled用到的Executor,但是使用的都是同一个线程池。