我对 Spring 的生命周期感到困惑。
XmlBeanFactory beanFactory
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));
上面的代码片段是否创建了对象?
如果上面的答案是真的。
a) 然后,对于作用域为“单例”的 bean,获取在上述代码片段中创建的对象。我是对还是错?
b) 对于范围为“原型(prototype)”的情况,创建的对象是否未被使用。因为,容器总是返回新对象。
XmlBeanFactory beanFactory
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));
上面的代码片段是否创建了对象?
如果答案是假的,
spring框架如何验证bean定义是否正确。
来自亨利的回答
通常,单例 bean 是在上下文启动时创建的。这可以通过lazy-init 或default-lazy-init 属性进行更改。
仅在需要时创建原型(prototype) bean。
仅在语法上,实例化 bean 时可能仍然存在错误,例如,如果未提供必需的属性。
最佳答案
BeanFactory
不像 ApplicationContext
那样在启动时预先实例化单例。因此,即使您的 bean 是非惰性和单例的,它也不会被创建。
prototype
bean 是按需创建的,每次您请求原型(prototype) bean 时,您都会得到一个新实例。但是一旦在 Autowiring 过程中使用了这样的 bean,同一个实例将永远被使用。
使用 ApplicationContext
所有的单例都被急切地创建,原型(prototype) bean 只在需要时。
另见
关于java - spring bean 的生命周期是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988720/