Spring学习笔记八--Bean生命周期和后置处理器
为什么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生命周期和后置处理器相关推荐
- IOC容器加载过程及Bean的生命周期和后置处理器
SpringIOC 容器加载过程 第一步:实例化化容器:AnnotationConfigApplicationContext @Configuration @ComponentScan("c ...
- 02.IOC容器加载过程及Bean的生命周期和后置处理器
Spring思维导图 SpringBean加载流程 SpringIOC加载过程-invokeBeanFactoryPostProcessors SpringIOC 容器加载过程 第一步:实例化化容器: ...
- spring一: 容器以及bean生命周期
spring框架的几个优点: 1. 轻量级 2. 针对接口编程,解耦合 3. aop编程 4. 方便集成各种优秀框架 5.非侵入式 6.容器 IOC(Inversion of Cont ...
- Spring.NET学习笔记(5)-对象生命周期和创建者对象
一.对象生命周期 说白了就是一init初始化方法和Dispose方法 两种实现方式 1.实现接口方法(造成耦合,放弃),IInitializingObject / init-method和IDispo ...
- Spring技术原理之Bean生命周期
生命周期图解 生命周期举例 public class BeanLifeTest implements BeanNameAware, ApplicationContextAware, Initializ ...
- 【前端学习】React学习笔记-事件、生命周期、虚拟DOMdiffing
跟着尚硅谷的天禹老师学习React 看视频可以直接点击 b站视频地址 React中的事件处理 补充ref 上面的ref在React官网中提到不要被过度使用,在一些情况下可以使用其他方法来获取数据,比如 ...
- Web前端学习笔记:Vue生命周期理解
一.感谢原创博主 示例代码出处====vue2.0 探索之路--生命周期和钩子函数的一些理解 官方文档 二.生命周期简单描述 总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后. 创建前/ ...
- 少侠请重新来过 - Vue学习笔记(二) - Vue生命周期
Vue 生命周期和钩子 每一个vue实例创建时,会经历一段初始化的过程,同时会调用其生命周期钩子,实例的钩子this指向它的Vue实例,不需要在钩子用箭头函数. <template>< ...
- iOS初级开发学习笔记:APP生命周期的学习总结
我们平常使用APP时,一般人都会知道有:简单的正在使用状态:通过home键等方式离开应用,但是不关闭应用,即后台状态:以及调出后台程序管理后向上滑动将应用"杀死",三种状态.而我们 ...
最新文章
- OnFocuChangeListener焦点事件
- JAVA 手机号正则 工具类
- tomcat默认密码,admin,manager密码需要自己设置,tomcat-users.xml
- 高并发秒杀系统--秒杀高并发分析与解决方案
- 手机WAPI功能检测常见问题分析(系列连载二):证书鉴别功能
- RabbitMQ学习总结(一)
- 计算机中单位换算tb,bit Byte KB MB GB TB 单位换算
- 计算机专业学生的必备文具,初一新生必备文具100件 学霸用的文具清单
- 智慧灯杆系统设计架构简介
- webstorm下载后打不开改怎么办
- hangfire支持mysql_快速入门 - Hangfire.HttpJob 中文文档
- python turtle画表情包--不可以色色
- 程序员找工作黑名单,避雷针!
- Linux下ffmpeg的完整安装
- 热爱生活,从电影开始
- Mooc_AutoCAD绘制建筑施工图_单元平面图测验题
- system()函数详解
- 10岁男童高考获566分或被大学破格录取(图)
- 男人的魅力不在于财富,而在于精神深度
- 思科路由器:开启telnet和ssh远程登陆
热门文章
- SQLite单例模式(QT4)
- Redis五种数据结构详解
- Toast弹不出来之谜
- 创建springboot_【小练习】创建SpringBoot程序
- vue项目搜索历史功能的实现
- 洲际的merlin怎么用_洲际merlin登陆
- Java第三大的数,Java通过排序找出数组第三大数字
- java完整版记事本_求java记事本完整版
- 【Socket网络编程】14. perror()、errno 的使用
- 【Linux】18.设置静态ip的方法(Ubuntu系统、nas、Red-Hat系统)