[英]How do I manually autowire a bean with Spring?
我有一個 bean B
,我必須自己創建它(使用new B()
)並且它有@Autowire
和@PostConstruct
注釋。
我如何讓 Spring 從我的 bean A
處理這些注釋?
相關問題:
Aaron,我相信您的代碼是正確的,但我使用了以下內容:
B bean = new B();
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean( bean );
factory.initializeBean( bean, "bean" );
第一個方法將處理@Autowire
字段和方法(但不是經典屬性)。 第二種方法將調用后處理( @PostConstruct
和任何定義的BeanPostProcessor
)。
如果 bean 實現了ApplicationContextAware
接口,則可以在 bean 中獲取應用程序上下文。
另一種選擇是讓 spring 容器自動創建一個新 bean(而不是使用 new 關鍵字自己創建一個新實例)。 在需要以編程方式實例化 new 的類中,注入AutowireCapableBeanFactory的實例:
@Autowired
private AutowireCapableBeanFactory beanFactory;
然后:
B yourBean = beanFactory.createBean(B.class);
容器將像往常一樣注入用@Autowired 注釋的實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.