Spring bean的生命周期
生命周期图解释
1.instantiate bean对象实例化
2.populate properties 封装属性
3.如果Bean实现BeanNameAware 执行 setBeanName
4.如果Bean实现BeanFactoryAware 执行setBeanFactory ,获取Spring容器
5.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessBeforeInitialization
6.如果Bean实现InitializingBean 执行 afterPropertiesSet
7.调用<bean init-method="init"> 指定初始化方法 init
8.如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization
执行业务处理
9.如果Bean实现 DisposableBean 执行 destroy
10.调用<bean destroy-method="customerDestroy"> 指定销毁方法 customerDestroy
下面举个了例子:
1,创建bean对象 并实现spring bean 底层方法
/**
* @Auther: zhangcheng
* @Date: 2019/9/22 23:26
* @Description:
*/
public class User implements BeanNameAware, BeanFactoryAware, InitializingBean , DisposableBean {
private String username;
private String password;
@Override
public void setBeanName(String s) {
System.out.println("3. s设置bean名字" +s);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
System.out.println("2。赋值属性"+username);
this.password = password;
}
public User(){
System.out.println("1.实例化....");
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("4.把对象放进容器");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("6 属性赋值完成 ");
}
public void myInit(){
System.out.println("7.自定义的初始化方法...");
}
@Override
public void destroy() throws Exception {
System.out.println("9 bean 被销毁");
}
public void myDestroy(){
System.out.println("10 自定义销毁方法" );
}
}
2 创建bean的加工器,在bean的实例化过程中对bean做一些包装处理,里边提供两个方法
以上实现的两个方法主要作用是:
1、判断bean是否继承了InitializingBean,如果继承接口,执行afterPropertiesSet()方法,
2、获得是否设置了init-method属性,如果设置了,就执行设置的方法
2.创建xml文件 声明bean对象 并装配bean对象
3.创建测试文件
执行结果如下
property