本文共 2214 字,大约阅读时间需要 7 分钟。
何为生命周期
从对象创建到对象销毁的过程bean的生命周期
2.1通过构造去创建bean实例 2.2为bean的属性设置值和对其他的bean的引用(调用set方法的过程) 2.3调用bean的初始化方法(需要在bean中自定义一个初始化方法) 2.4bean使用(此时bean对象已经获取到了) 2.5当容器关闭的时候,调用bean的销毁方法(需要在bean中配置销毁的方法)下面演示一下bean的生命周期的具体过程:
首先编写一个类,用该类来进行bean生命周期的演示,创建过程(包括定义属性有参构造,set方法,初始化方法,和销毁的方法)public class LifeCycle { public LifeCycle(){ System.out.println("bean对象实例化出来了"); } private String name; public void setName(String name) { System.out.println("set方法执行"); this.name = name; } /*自定义初始化方法,演示bean的生命周期*/ public void initial(){ System.out.println("初始化方法执行"); } /*自定义销毁方法,演示bean的生命周期*/ public void destr(){ System.out.println("销毁方法执行"); } @Override public String toString() { return "LifeCycle{" + "name='" + name + '\'' + '}'; }}
在spring核心文件application-context.xml中进行该类对象的创建,并且注入属性。
编写测试:
@Test public void testCycle() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //创建了该对象 LifeCycle life = context.getBean("lifeCycle", LifeCycle.class); //演示生命周期中的使用对象阶段 System.out.println("对象可以使用了"); System.out.println(life); //需要手动调用销毁方法,才会执行类中定义的销毁的方法。 context.close(); }
运行结果:
!!!!!!!需要注意的是,如果加上spring中的后置处理器,那么bean对象的生命周期将由5步变为7步,其中需要加上的两个方法分别是bean对象初始化之前的方法和bean对象初始化之后的方法
关于如何加上这两个方法,步骤是:
public class MyBeanPost implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object o, String s) throws BeansException { System.out.println("初始化方法之前执行"); return o; } @Override public Object postProcessAfterInitialization(Object o, String s) throws BeansException { System.out.println("初始化方法之后执行"); return o; }}
2.在核心配置文件当中,配置后置处理器,也可以理解为创建该对象,只不过该对象一创建,spring发现它实现了BeanPost接口,那么就把它当做可以用于作用其他bean对象生命周期中的两个阶段的方法
加上了后置处理器之后的bean对象的生命周期运行截图:
最后总结: 如果没有配置后置处理器,那么bean的生命周期只有五步,如果配置了后置处理器,那么就有七步。并且需要注意到的是一旦配置了后置处理器,那么spring会为每一个bean对象都配置后置处理器,因而每一个bean对象创建之后,都会执行自定义后置处理器中的两个方法的内容(现阶段是打印一句话,也许可以用于进行更为复杂的操作。)转载地址:http://xrlen.baihongyu.com/