@Async(value = "")
可以使用Executor
或TaskExecutor
名称来运行异步流程。
我的目标是通常使用默认的@Async
实现执行spring
方法,但要使用一个与特定执行程序一起运行的特定方法@Async(value = "myExecutor")
。
我想使用一次只运行一个线程的执行程序,并将任何其他数据保留在队列中。
@Bean
public ExecutorService getMyTaskExecutor() {
return Executors.newFixedThreadPool(1);
}
问题:我现在如何将此ExecutorService
应用于我的@Async
方法?
@Async(value = "myTaskExecutor")
public void myprocess() {
}
@Async(value = "asdasdasdMyTaskExecutor")
public void myprocess() {
}
问题是:无论我在这里写什么价值,应用程序总是会启动。所以我无法确定这里是否应用了正确的执行程序。我必须使用什么bean名称?
答案 0 :(得分:2)
引用@Bean
文档:
虽然
name
属性可用,但确定bean名称的默认策略是使用@Bean
方法的名称。
因此,如果您的方法名为getMyTaskExecutor
,则应该有@Async(value = "getMyTaskExecutor")
,即执行程序的名称必须与bean的名称相对应,默认情况下,该名称是@Bean
注释方法。
答案 1 :(得分:0)
根据documentation,它应该是@Async(" myTaskExecutor")