我正在尝试使用spring提供的@Async注释。通过我发现的一些博客,使用它有以下限制:
我有一个方法,它从我要标记@Async的同一个类调用。有没有办法从同一个班级实现它?
答案 0 :(得分:1)
在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);
}
}
或强>
另一种选择是提取方法以分离类并自动装配它。在进行上述方法之前,我会亲自探讨这个选项。