bean的七步生命周期
(1)调用无参数构造方法创造bean实例
(2)调用set方法对bean的属性及其他bean的引用属性进行设置
(3)把bean实例传递给bean的后置处理器方法postProcessBeforeInitialization()
(4)调用bean的初始化方法initMethod()
(5)把bean实例传递给bean的后置处理器方法postProcessAfterInitialization()
(6)获取创建bean的实例对象进行使用
(7)当容器关闭时,调用bean的初始化方法destroyMethod()
代码演示:
(1)首先,创建一个类
MyBeanLifeCycle
public class MyBeanLifeCycle {
private String name;
public MyBeanLifeCycle() {
System.out.println("第一步,执行无参构造方法创造bean实例");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
System.out.println("第二步,执行set方法对bean的属性进行设置");
}
public void initMethod(){
System.out.println("第四步,执行bean的初始化方法");
}
public void destroyMethod(){
System.out.println("第七步,容器关闭了执行bean的销毁方法");
}
@Override
public String toString() {
return "MyBeanLifeCycle{" +
"name='" + name + '\'' +
'}';
}
}
(2)创建一个类实现接口 BeanPostProcessor,创建后置处理器
MyBeanPost
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;
}
}
(3)对spring的xml文件进行配置
bean1.xml
<?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="myBeanLifeCycle" class="cn.com.spring.lifecycle.MyBeanLifeCycle"
init-method="initMethod" destroy-method="destroyMethod">
<property name="name" value="小猪"> </property>
</bean>
<bean id="myBeanPost" class="cn.com.spring.lifecycle.MyBeanPost"> </bean>
</beans>
(4)测试
测试代码
public class MainApp {
public static void main(String[] args) {
//加载配置文件,获取ClassPathXmlApplicationContext容器
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//获取bean的实例对象
MyBeanLifeCycle myBeanLifeCycle = context.getBean("myBeanLifeCycle", MyBeanLifeCycle.class);
System.out.println("第六步,获取创建bean的实例对象---->"+myBeanLifeCycle);
//手动让bean实例进行销毁
context.close();
}
}
运行结果: