博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.02-Spring IOC 容器中Bean的生命周期
阅读量:6602 次
发布时间:2019-06-24

本文共 1731 字,大约阅读时间需要 5 分钟。

hot3.png

Spring IOC 容器可以管理Bean的生命周期,Spring 允许在Bean的生命周期的特定点执行定制的任务。

Spring IOC  容器中 Bean  的生命周期如下:

① .  通过构造器或工厂方法创建 Bean  实例 : 调用构造器
② .  为 Bean的属性设置值和对其他 Bean的引用 : 调用 setter
③ .  将 Bean给实例传递给Bean后置处理器的postProcessBeforeInitialization  方法
④ .  调用 Bean的初始化方法 : init-method
⑤ .  将Bean实例传递给 Bean后置处理器的postProcessAfterInitialization  方法
⑥ .  Bean  可以使用了
⑦ .  当容器关闭时 ,  调用 Bean  的销毁方法 : destroy- - method 。

    Bean  的初始化和销毁方法:可以通过 bean 节点的 init-method 和destroy-method 来配置 Bean 的初始化方法和销毁方法:

    注意:ApplicationContext 接口中没有关闭容器的方法,所以使用ApplicationContext 接口作为 IOC 容器的引用,destroy-method 将不会起到作用 , 需要使用ApplicationContext 的子接口ConfigurableApplicationContext。

cc7a9db6814f35d14df62a96bc304719bda.jpg

 

详解Bean后置处理器:

Bean后置处理器:Spring提供的特殊的Bean

     ①. Bean 后置处理器允许在调用初始化方法(即:bean 节点 init-method属性对应的方法的前后)前后对 Bean 进行额外的处理.

     ②. Bean 后置处理器对 IOC 容器里的所有 Bean 实例逐一处理, 而非单一实例. 其典型应用是: 检查 Bean 属性的正确性或根据特定的标准更改 Bean的属性.
    ③. 对 Bean 后置处理器而言, 需要实现 BeanPostProcessor 接口

pulic class PersonPostProcessor implements BeanPostProcessor{  /**   *  arg0: IOC容器中bean的实例   *  arg1: IOC容器中该bean的名字   */  @Override  public Object postProcessorAfterInitialization(Object arg0,String arg1) throws BeansException{    if(arg0 instanceof Person){      System.out.println("postProcessorAfterInitialization");      Person person=(Person)arg0;      String name=person.getName();      if(!name.equals("AAAA")){        System.out.println("name值必须为AAAA!");        person.setName("AAAA");      }    }     return arg0;  }  @Override  public Object postProcessBeforeInitialization(Object arg0,String arg1) throws BeansException {    System.out.println("postProcessBeforeInitialization");        return arg0;  }}

④. Bean 后置处理器需要在 IOC 容器中进行配置,但不需要指定 id 属性,Spring IOC 容器会自动的识别这是个 Bean 后置处理器,自动的使用它。

转载于:https://my.oschina.net/u/3678587/blog/3042441

你可能感兴趣的文章
Spring Retry重试机制
查看>>
Android官方架构组件LiveData: 观察者模式领域二三事
查看>>
[Android组件化]组件化数据分享
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
HTML5开发中的javascript闭包
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
ionic3 教程(二)登录页制作
查看>>
Python正则表达式初识(四)
查看>>
不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析
查看>>
不务正业的前端之SSO(单点登录)实践
查看>>
配置通过VLANIF实现跨设备VLAN内通信
查看>>
一站式计费解决方案——腾讯计费首次亮相昆明
查看>>
Linux-正则表达式
查看>>
文字转语音转换的方法有哪些?
查看>>
linux系统电视盒子到底是什么
查看>>
MySQL的root用户密码忘了 , 该怎么办?
查看>>
一次性可以导入多少首歌曲到NoteBurner Spotify Music Converter中?
查看>>
基本shell脚本的编辑及变量
查看>>