1 生命周期
从对象创建到对象销毁的过程
2 bean生命周期
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)调用bean的初始化的方法(需要进行配置初始化的方法)
(4) bean可以使用了(对象获取到了)
(5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)
package com.bean; public class Orders { private String oname; public Orders() { System.out.println("第一步 执行无参数构造创建bean实例"); } public void setOname(String oname) { this.oname = oname; System.out.println("第二步 调用set方法设置属性值"); } //创建执行的初始化的方法 public void initMethod(){ System.out.println("第三步,执行初始化方法"); } //创建执行销毁的方法 public void destroyMethod(){ System.out.println("第五步 执行销毁的方法"); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="orders" class="com.bean.Orders" init-method="initMethod" destroy-method="destroyMethod"> <property name="oname" value="手机"></property> </bean> </beans>
@Test public void testbean3(){ ApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml"); Orders orders = context.getBean("orders", Orders.class); System.out.println("第四步,获取创建bean实例对象"); System.out.println(orders); //手动让bean实例销毁 ((ClassPathXmlApplicationContext)context).close(); }
4 bean的后置处理器 bean的生命周期一共有七步
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(2.5) 把bean实例传递bean后置处理器的方法 postProcessBeforeInitialization
(3)调用bean的初始化的方法(需要进行配置初始化的方法)
(3.5) 把bean实例传递bean后置处理器的方法 postProcessAfterInitialization
(4) bean可以使用了(对象获取到了)
(5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)
演示添加后置处理器效果
(1)创建类 实现接口beanpostprocessor,创建后置处理器
package com.bean; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.lang.Nullable; public class MybeanPost implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之前执行的方法"); return bean; } @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { System.out.println("在初始化之后执行的方法"); return bean; } }
(2)配置后置处理器
<bean id="myBeanPost" class="com.bean.MybeanPost"></bean>