抽象的异步方法 class
Async method in abstract class
我想在抽象 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
似乎在抽象 class 中不起作用的任何建议?
我正在使用 SpringBoot 2.1。3.RELEASE
都是因为someAsyncTask
是final
。
最终阻止此方法运行 @Override
。
似乎不可能这样做并保留 @Async
。
感谢@Deadpool 的帮助!
我想在抽象 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
似乎在抽象 class 中不起作用的任何建议?
我正在使用 SpringBoot 2.1。3.RELEASE
都是因为someAsyncTask
是final
。
最终阻止此方法运行 @Override
。
似乎不可能这样做并保留 @Async
。
感谢@Deadpool 的帮助!