为什么80%的码农都做不了架构师?>>>   

Bean生命周期和后置处理器
IOC容器的bean生命周期
1.构造器或工厂方法建立bean实例
2.bean属性赋值,引用其他bean
3.bean实例传递给bean后置处理器的BeforeInitialzation()
4.调用bean初始化方法init-method()
5.bean实例传递给bean后置处理器的AfterInitialzation()
6.使用bean实例
7.关闭ioc容器,调用bean销毁方法destory-method()

bean设置了init-method and destroy-method属性

Bean后置处理器
implements BeanPostProcessor实现2个方法
postProcessBeforeInitialization()
postProcessAfterInitialization()
调用初始化方法前后对bean进行额外处理
对所有bean逐一处理
IOC自动识别后置处理器

<?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="car" class="cycle.Car" init-method="init" destroy-method="destory"><property name="brand" value="audi"/></bean><!-- 后置处理器,实现BeanPostProcessor接口的2个方法postProcessBeforeInitialization在init-method之前调用postProcessAfterInitialization在int-method之后调用返回实际的bean,可以修改不需要配置id,IOC容器自动识别--><bean class="cycle.MyBean"></bean>
</beans>
package cycle;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;/*** 后置处理器,缺省处理所有的bean*/
public class MyBean implements BeanPostProcessor{@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("postProcessBeforeInitialization : " + beanName );if ("car".equals(beanName)) {}return bean;}@Overridepublic Object postProcessAfterInitialization(Object o, String s) throws BeansException {System.out.println("postProcessAfterInitialization : " + s );Car car = new Car();car.setBrand("benz");return car;}
}
package cycle;public class Car {private String brand;public Car() {System.out.println("this is car constructor.");}public void setBrand(String brand) {System.out.println("setting brand ...");this.brand = brand;}public void init() {System.out.println("init ...");}public void destory() {System.out.println("destory...");}@Overridepublic String toString() {return "Car{" +"brand='" + brand + '\'' +'}';}
}
package cycle;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("cycle//cycle.xml");Car car = (Car) ctx.getBean("car");System.out.println(car);//close IOC containerctx.close();}
}

转载于:https://my.oschina.net/jimyao/blog/631716

Spring学习笔记八--Bean生命周期和后置处理器相关推荐

  1. IOC容器加载过程及Bean的生命周期和后置处理器

    SpringIOC 容器加载过程 第一步:实例化化容器:AnnotationConfigApplicationContext @Configuration @ComponentScan("c ...

  2. 02.IOC容器加载过程及Bean的生命周期和后置处理器

    Spring思维导图 SpringBean加载流程 SpringIOC加载过程-invokeBeanFactoryPostProcessors SpringIOC 容器加载过程 第一步:实例化化容器: ...

  3. spring一: 容器以及bean生命周期

    spring框架的几个优点: 1. 轻量级  2. 针对接口编程,解耦合   3. aop编程   4. 方便集成各种优秀框架  5.非侵入式   6.容器 IOC(Inversion of Cont ...

  4. Spring.NET学习笔记(5)-对象生命周期和创建者对象

    一.对象生命周期 说白了就是一init初始化方法和Dispose方法 两种实现方式 1.实现接口方法(造成耦合,放弃),IInitializingObject / init-method和IDispo ...

  5. Spring技术原理之Bean生命周期

    生命周期图解 生命周期举例 public class BeanLifeTest implements BeanNameAware, ApplicationContextAware, Initializ ...

  6. 【前端学习】React学习笔记-事件、生命周期、虚拟DOMdiffing

    跟着尚硅谷的天禹老师学习React 看视频可以直接点击 b站视频地址 React中的事件处理 补充ref 上面的ref在React官网中提到不要被过度使用,在一些情况下可以使用其他方法来获取数据,比如 ...

  7. Web前端学习笔记:Vue生命周期理解

    一.感谢原创博主 示例代码出处====vue2.0 探索之路--生命周期和钩子函数的一些理解 官方文档 二.生命周期简单描述 总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后. 创建前/ ...

  8. 少侠请重新来过 - Vue学习笔记(二) - Vue生命周期

    Vue 生命周期和钩子 每一个vue实例创建时,会经历一段初始化的过程,同时会调用其生命周期钩子,实例的钩子this指向它的Vue实例,不需要在钩子用箭头函数. <template>< ...

  9. iOS初级开发学习笔记:APP生命周期的学习总结

    我们平常使用APP时,一般人都会知道有:简单的正在使用状态:通过home键等方式离开应用,但是不关闭应用,即后台状态:以及调出后台程序管理后向上滑动将应用"杀死",三种状态.而我们 ...

最新文章

  1. OnFocuChangeListener焦点事件
  2. JAVA 手机号正则 工具类
  3. tomcat默认密码,admin,manager密码需要自己设置,tomcat-users.xml
  4. 高并发秒杀系统--秒杀高并发分析与解决方案
  5. 手机WAPI功能检测常见问题分析(系列连载二):证书鉴别功能
  6. RabbitMQ学习总结(一)
  7. 计算机中单位换算tb,bit Byte KB MB GB TB 单位换算
  8. 计算机专业学生的必备文具,初一新生必备文具100件 学霸用的文具清单
  9. 智慧灯杆系统设计架构简介
  10. webstorm下载后打不开改怎么办
  11. hangfire支持mysql_快速入门 - Hangfire.HttpJob 中文文档
  12. python turtle画表情包--不可以色色
  13. 程序员找工作黑名单,避雷针!
  14. Linux下ffmpeg的完整安装
  15. 热爱生活,从电影开始
  16. Mooc_AutoCAD绘制建筑施工图_单元平面图测验题
  17. system()函数详解
  18. 10岁男童高考获566分或被大学破格录取(图)
  19. 男人的魅力不在于财富,而在于精神深度
  20. 思科路由器:开启telnet和ssh远程登陆

热门文章

  1. SQLite单例模式(QT4)
  2. Redis五种数据结构详解
  3. Toast弹不出来之谜
  4. 创建springboot_【小练习】创建SpringBoot程序
  5. vue项目搜索历史功能的实现
  6. 洲际的merlin怎么用_洲际merlin登陆
  7. Java第三大的数,Java通过排序找出数组第三大数字
  8. java完整版记事本_求java记事本完整版
  9. 【Socket网络编程】14. perror()、errno 的使用
  10. 【Linux】18.设置静态ip的方法(Ubuntu系统、nas、Red-Hat系统)