春豆的生命周期是什么?

时间:2012-12-21 10:50:24

标签: java spring lifecycle

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

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

上面的代码片段是否会创建对象?

如果上述答案是真的。

a)然后,对于范围为“singleton”的bean,获取在上面的代码片段中创建的对象。我是对还是错?

b)对于范围为“prototype”的情况,创建的对象是否未使用。因为,容器总是返回新对象。

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

上面的代码片段是否会创建对象?

如果答案是假的,

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

From the answer of Henry

Usually, singleton beans are created when the context starts. This can be changed with the lazy-init or default-lazy-init attributes.

Prototype beans are only created when needed.

Only syntactically, there might still be errors when the bean is instantiated, for example if a required property is not provided.

2 个答案:

答案 0 :(得分:8)

BeanFactory不像ApplicationContext那样在启动时预先实例化单例。所以,即使你的bean是非懒惰和单身,它也不会被创建。

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

ApplicationContext所有单身人士都热切地创建,并且只根据需要制作原型豆。

另见

答案 1 :(得分:1)

通常,在上下文启动时会创建单例bean。可以使用lazy-initdefault-lazy-init属性更改此内容。

原型bean仅在需要时创建。