Spring Async ThreadPoolTask​​Scheduler未初始化

sma*_*ket 16 java spring asynchronous

我试图在Spring中使用Async注释,但我得到了

java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized
Run Code Online (Sandbox Code Playgroud)

错误,当我尝试运行标记为异步的方法时.以下是Async的配置:

@EnableScheduling
@EnableAsync
@Configuration 
public class SchedulingConfiguration implements AsyncConfigurer{

    @Override
    public Executor getAsyncExecutor() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        return scheduler;
    }

}
Run Code Online (Sandbox Code Playgroud)

以下是异步方法的声明.

@Async
@Transactional(value = "baseTransactionManager", isolation = Isolation.READ_COMMITTED)
public void foo(Bar bar) {// some code here}
Run Code Online (Sandbox Code Playgroud)

我在这里想念的是什么?

提前致谢.

Yar*_*hiy 31

scheduler.initialize()在返回调度程序之前,必须在设置所有属性后显式调用.

查看全部工作测试用例这里.

  • 请注意,只有在调度程序不是Spring bean时才需要调用`initialize()`,否则在`afterPropertiesSet()`中自动调用它. (4认同)
  • Stavnichy我找到了我的异步方法无效的原因.我必须在Configuration类中指定componentScan.我的配置类是在主配置中导入的,我在父配置文件中进行了组件扫描.但是,对于Async来说还不够,因此我已将componentScan添加到AyncConfiguration文件中,一切正常.非常感谢! (2认同)