我使用的組件上的@Async
註釋我手動另一個類使用AutowireCapableBeanFactory
實例:春天 - 在組件手動創建@Async不工作
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean(object);
factory.initializeBean(object, "MyObject");
我的問題是,調用類object
上的異步方法是手動創建Spring上下文,這意味着我無法在其中自動裝入object
,並且@Async
註釋在這種情況下似乎不起作用。
這裏是我的Spring上下文實例:
@Component
@Scope("prototype")
@ComponentScan({ "com.package.my" })
public class Application {
private static ApplicationContext applicationContext;
public Application() {
if (applicationContext == null) {
applicationContext = new AnnotationConfigApplicationContext(Application.class);
}
}
}
我用Proxy
類使用AutowireCapableBeanFactory
時具有自@Autowired
在它自動連接我的對象是工作的罰款解決的問題。
這就是說,我對這個解決方案並不滿意,因爲它需要我創建一個沒有其他用途的中間類,而且我非常肯定可以在手動創建對象時使@Async
註釋生效。
有沒有更好的方法來做到這一點?
感謝。
不要創建手動創建對象(除非想要奇怪的內存問題,事務性怪異等,否則不會創建上下文的實例)。 –
捕獲並使用'initializeBean'的返回值。 –
@ M.Deinum我別無選擇,我的應用程序被用作另一個不是Spring應用程序的應用程序庫。 – AntoineB