前言
在这篇文章中,将会介绍bean的生命周期以及bean配置时的一些细节说明
bean的生命周期
bean的生命周期分为以下5步
- 执行构造器
- 执行对应的set方法
- 调用bean的初始化方法
- 使用bean
- 调用bean的销毁方法
其中第三步和第五步都需要我们手动配置
验证bean的生命周期
首先创建一个Dog,内容如下
public class Dog {
private String name;
public Dog() {
System.out.println("构造器被调用");
}
public void setName(String name) {
this.name = name;
System.out.println("set方法被调用");
}
public void init(){
System.out.println("初始化方法被调用");
}
public void destroy(){
System.out.println("销毁方法被调用");
}
}
在xml中进行配置
<bean class="com.ttpfx.spring.beans.Dog" id="dog"
init-method="init" destroy-method="destroy">
<property name="name" value="旺财"/>
</bean>
我们在配置这个bean的时候指定了初始化时要调用的方法,销毁时要调用的方法,下面来创建这个bean查看控制台输出
@Test
public void t1(){
ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("beans03.xml");
Dog dog = ioc.getBean("dog",Dog.class);
System.out.println("dog:"+dog);
ioc.close();
}
我们可以发现,bean的生命周期确实是上面说的那样
单例模式和多例模式
在spring中有单例模式和多例模式
- 单例模式:默认模式,表示spring容器中只会有一个该bean的实例
- 多例模式:我们按照这个模式配置,每次获取bean的时候都会新创建一个bean
我们通过下面的配置项来对模式进行指定
如果scope为singleton,那么就是单例模式,为prototype,那么就是多例模式
bean的创建顺序
bean的创建顺序默认是按照xml中的配置先后顺序来的,但是如果一个bean引用另外一个bean的时候,那么这时spring就会先去创建要引用的bean。
如果我们希望一个bean在另外一个bean创建之后再进行创建,我们可以使用depend-on来进行设置。
<bean class="com.ttpfx.spring.beans.Dog" id="dog2" depends-on="dog"/>
这行配置就表示dog2会在dog创建之后再进行创建
总结
在这篇文章中,介绍了bean的生命周期以及bean的创建顺序,还有单例模式和多例模式。spring的知识点特别多,文章中实在讲不完,如果想了解更多,还是只能去看官方文档