Java @带Spring的Asyn注释

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

我正在尝试使用spring提供的@Async注释。通过浏览一些博客,我发现使用它有以下限制:

它只能应用于公共方法 自调用——从同一个类中调用异步方法——将不起作用
我有一个方法,它是从我想要标记为@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共享代码