對不起,如果這個問題聽起來含糊不清,但我會嘗試增加一些清晰度。你可以在彈簧容器中直接注入spring bean嗎?
如果我有一個類關聯,如下所示。
A -> B -> C -> D
隨着經由彈簧bean配置正在創建類A,而B,C & d被彈簧容器例如外部直接在代碼創建的。如果我想將一個新的bean連接到D類中,我可以在D中使用@Inject註釋,然後在Spring bean配置中創建一個關聯的@Bean定義,該定義創建A,或者因爲B,C不是Spring bean不行?
對不起,如果這個問題聽起來含糊不清,但我會嘗試增加一些清晰度。你可以在彈簧容器中直接注入spring bean嗎?
如果我有一個類關聯,如下所示。
A -> B -> C -> D
隨着經由彈簧bean配置正在創建類A,而B,C & d被彈簧容器例如外部直接在代碼創建的。如果我想將一個新的bean連接到D類中,我可以在D中使用@Inject註釋,然後在Spring bean配置中創建一個關聯的@Bean定義,該定義創建A,或者因爲B,C不是Spring bean不行?
我沒有測試,但你可以使用AutowireBeanCapableFactory#autowire方法
bean工廠很幸運可以從ApplicationContext
訪問您可以使用new B();
對象,並具有相關通過Spring
注入管理。
比方說一個A
實例由Spring
容器管理,並B
樣子:
public class B {
@Autowire
private A a;
...
}
...
B b = new B();
...
如果你想使用Spring
的@Autowire
注入依賴於B
:
B
與:@Configurable(dependencyCheck = true)
java -javaagent:<path to spring-agent-${spring.version}.jar> ...
沒有它不會工作,你需要手動設置到對象D. –
好了,所以注入一個Spring bean爲d級,我就必須有B,C&d全部創建爲春天的豆子? – Juckky
@PraneethRamesh你可能是錯的。 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/config/AutowireCapableBeanFactory.html – Antoniossss