Java @带Spring的Asyn注释
我正在尝试使用spring提供的@Async注释。通过浏览一些博客,我发现使用它有以下限制: 它只能应用于公共方法 自调用——从同一个类中调用异步方法——将不起作用Java @带Spring的Asyn注释,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在尝试使用spring提供的@Async注释。通过浏览一些博客,我发现使用它有以下限制: 它只能应用于公共方法 自调用——从同一个类中调用异步方法——将不起作用 我有一个方法,它是从我想要标记为@Async的同一个类调用的。在Spring v4.3+中,您可以使用自注入,并在自注入引用上调用该方法 例如: @Component public class SomeClass { @Autowired private SomeClass selfInjected; pu
我有一个方法,它是从我想要标记为@Async的同一个类调用的。在Spring v4.3+中,您可以使用自注入,并在自注入引用上调用该方法 例如:
@Component
public class SomeClass {
@Autowired
private SomeClass selfInjected;
public void someMethod() {
selfInjected.someOtherMethod();
}
@Async
public void someOtherMethod(){
...;
}
}
更新为OP使用4.3之前的版本:
这对你有用
@Component
public class SomeClass {
@Autowired
private ApplicationContext applicationContext;
private SomeClass selfInjected;
@PostConstruct
private void init() {
selfInjected = applicationContext.getBean(SomeClass.class);
}
}
或
另一个选项是提取方法以分离类并自动关联它。在使用上述方法之前,我会亲自探索此选项。您是如何进行的?仍在寻找解决方案。我们正在研究Spring4.2更新我的答案。我将该方法提取到一个单独的类中,并自动连接它。尝试使用应用程序上下文的自注入,但仍然使用同一线程执行。是否可以与ApplciationContext共享代码