Spring Bean的生命周期是什么?

12

我对Spring的生命周期感到困惑。

XmlBeanFactory beanFactory 
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));

上述代码片段是否创建了对象?

如果上述答案属实。

a) 那么,对于作用域为"singleton"的bean,在上述代码片段期间创建的对象是正确的吗?我是对还是错?

b) 对于作用域为"prototype"的情况,创建的对象是否未使用。因为容器始终会返回新对象。

XmlBeanFactory beanFactory 
= new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));

以上代码片段是否创建了对象?

如果答案是否定的,

Spring框架如何验证bean定义是否正确。

根据Henry的回答

通常情况下,单例bean在上下文启动时创建。这可以通过lazy-init或default-lazy-init属性进行更改。

原型bean仅在需要时才会创建。

仅在语法上,当实例化bean时可能仍然存在错误,例如如果未提供必需的属性。

2个回答

8

BeanFactory 不像 ApplicationContext 在启动时预先实例化单例。即使您的 bean 是非懒加载和单例的,它也不会被创建。

prototype bean 是按需创建的,每次请求原型 bean 时都会获得一个新实例。但是一旦这样的 bean 在自动装配期间被使用,同一个实例将永久使用。

使用 ApplicationContext 时,所有单例都会被急切地创建,而原型bean只在需要时才会创建。

另请参阅


1

通常情况下,单例 Bean 在上下文启动时创建。这可以通过 lazy-initdefault-lazy-init 属性进行更改。

原型 Bean 只有在需要时才会被创建。


对于原型,启动时Spring是否验证在bean定义下定义的属性? - Shashi
仅在语法上可能存在错误,例如如果未提供必需属性,则在实例化bean时仍可能存在错误。 - Henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接