您的位置:首页 > 编程语言 > Java开发

Spring容器中Bean的生命周期

2020-02-14 00:55 651 查看

Spring容器中Bean的生命周期

1.instantiate bean对象实例化

2.populate properties 封装属性

3.如果Bean实现BeanNameAware 执行 setBeanName

4.如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplicationContext

5.如果存在类实现BeanPostProcessor (前处理Bean) ,执行postProcessBeforeInitialization

6.如果Bean实现InitializingBean 执行 afterPropertiesSet

7.调用 指定初始化方法 init

8.如果存在类实现 BeanPostProcessor(后处理Bean) ,执行postProcessAfterInitialization

9.执行业务处理

10.如果Bean实现 DisposableBean 执行 destroy(新版本已经取消)

11.调用 指定销毁方法 customerDestroy

其中前处理bean和后处理bean是最重要的

代码块1:

public class HelloService implements BeanNameAware, BeanFactoryAware, InitializingBean {

public HelloService() {
System.out.println("1.instantiate bean对象实例化");
}

public void show(){
System.out.println("9.HelloService show...");
}

public void myInit(){
System.out.println("7.myInit....");
}

public void myDestroy(){
System.out.println("11.myDestroy....");
}

@Override
public void setBeanName(String s) {
//设置bean name名称
System.out.println("3.如果Bean实现BeanNameAware 执行 setBeanName");
}

@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
System.out.println("4.如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂 setBeanFactory 或者上下文对象 setApplicationContext");
}

@Override
public void afterPropertiesSet() throws Exception {
System.out.println("6.如果Bean实现InitializingBean 执行 afterPropertiesSet ");
}
}

代码块2:

public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
System.out.println("5.如果存在类实现BeanPostProcessor (后处理Bean) ,执行postProcessBeforeInitialization");
return o;
}

@Override
public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
System.out.println("8.如果存在类实现 BeanPostProcessor(处理Bean) ,执行postProcessAfterInitialization");
return o;
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
温存& 发布了6 篇原创文章 · 获赞 0 · 访问量 65 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: