繁体   English   中英

抽象类中的异步方法

[英]Async method in abstract class

我想在一个抽象类中使用一个@Async方法,但是它似乎不起作用(如果我放一些日志,它是同一线程)。

public abstract class MyAbstractClass {
    ...

    @Async
    public final void someAsyncTask() {
        ...
    }

    public abstract void doMyStuff();
}
@Service
public class MyClass extends MyAbstractClass {
    ...

    @Override
    public void doMyStuff() {
        ...
    }
}
@Component
public class Initializer {

    @Autowired
    private MyClass myClass;

    @PostConstruct
    public void init() {
        // This call is NOT async
        myClass.someAsyncTask();
    }
}
@Configuration
@EnableAsync
public class SpringAsyncConfig implements AsyncConfigurer {

    @Override
    public Executor getAsyncExecutor() {
        ...
        return threadPoolTaskExecutor;
    }
}

如果@Async方法直接位于MyClass内部(不再扩展MyAbstractClass,因为它现在已不再有用):它可以工作!

关于@Async为什么似乎不能在抽象类中工作的任何建议吗?

我正在使用SpringBoot 2.1.3.RELEASE

都是因为someAsyncTaskfinal

这是最终版本,防止这种方法从beeing @Override

似乎不可能这样做并保留@Async

感谢@Deadpool的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM