[英]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.