[英]Spring: does objects privately created in spring managed beans accessible by spring?
[英]If one bean is managed by Spring does this mean all created beans also have to be managed
如果我有一個包含另一個非Spring bean的Spring bean,如下所示:
@Component
class SpringBean {
private MyBean mb = new MyBean();
}
我收到錯誤消息:無法連線MyBean
但是,如果我在方法中聲明Bean:
@Component
class SpringBean {
private void myMethod(){
MyBean mb = new MyBean();
}
}
然后在調用bean時正確初始化了bean。
那么Spring是否不允許Spring bean創建非Spring bean? 這背后的原因是什么?
Spring將僅管理由Spring容器創建的bean,並提供依賴項注入以及Spring給您的所有好處(和問題)。
那么Spring是否不允許Spring bean創建非Spring bean?
畢竟,Spring bean是POJO,因此可以像使用公共構造函數的任何類一樣手動創建它們。 這意味着,您可以執行以下操作:
public void foo() {
SpringBean springBeanNotManagedBySpring = new SpringBean();
//use springBeanNotManagedBySpring...
}
但是,正如我回答之初所說, springBeanNotManagedBySpring
不是由Spring管理的,因此它沒有Spring托管bean的好處。
請注意,您在示例中做的兩件事是:
MyBean
類型的類中有一個字段,Spring嘗試注入它,但是看起來找不到要注入的Spring bean。 您應該發布您的bean的配置,以便我們對此進行更好的分析。 MyBean
類型的局部變量(與類中的字段完全不同),實例化由程序員決定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.