spring学习笔记八 bean生命周期
来源:互联网 发布:大腿内侧黑色素知乎 编辑:程序博客网 时间:2024/05/24 01:47
一、首先建立一个cycle包,里面有三个类:
Car.java
package cycle;public class Car {public Car() {System.out.println("car construct...");} private String brand; public void setBrand(String brand) { System.out.println("set brand..");this.brand = brand;} public void init(){ System.out.println("init..."); } public void destroy(){ System.out.println("destry..."); }@Overridepublic String toString() {return "Car [brand=" + brand + "]";} }
Main.javapackage cycle;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {public static void main(String[] args) {// TODO Auto-generated method stub ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("cycle.xml"); Car car =(Car) ctx.getBean("car"); System.out.println(car); ctx.close();}}
MyBeanPostProcessor.java对BeanPostProcessor继承
package cycle;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("postProcessAfterInitialization "+" , "+bean+" , "+beanName);Car car =new Car();car.setBrand("DaZhong");/* * 通常情况下BeanPostProcessor是处理所有的bean的,所以操作指定的bean,要设置一个过滤; * * */if("car".equals(beanName)){//....}return car;}@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("postProcessBeforeInitialization "+" , "+bean+" , "+beanName);return bean;}}
二、配置cycle.xml文件
cycle.xml
<?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="destroy"> <property name="brand" value="Audi"></property> </bean> <!-- 配置bean的后置处理器--> <bean class="cycle.MyBeanPostProcessor"></bean></beans>
运行结果:
九月 06, 2017 3:20:19 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3f91beef: startup date [Wed Sep 06 15:20:19 CST 2017]; root of context hierarchy
九月 06, 2017 3:20:20 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [cycle.xml]
car construct...
set brand..
postProcessBeforeInitialization , Car [brand=Audi] , car
init...
postProcessAfterInitialization , Car [brand=Audi] , car
car construct...
set brand..
Car [brand=DaZhong]
九月 06, 2017 3:20:20 下午 org.springframework.context.support.AbstractApplicationContext doClose
信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@3f91beef: startup date [Wed Sep 06 15:20:19 CST 2017]; root of context hierarchy
destry...
1、配置bean的后置处理器:不需要配置id,IOC容器自动识别
2、实现BeanPostProcessor接口,并具提供两个方法的实现:
postProcessBeforeInitialization:init-method方法之前被调用
postProcessAfterInitialization:init-method方法之后被调用
bean:bean的本身
benaName:IOC容器配置的bean的名字
返回值:是实际上返回给用户的那个bean,注意可以再这两个方法中修改放回的bean,甚至返回一个新的bean
- spring学习笔记八 bean生命周期
- spring学习笔记2---bean的生命周期
- Spring 学习笔记---Bean的生命周期
- Spring学习笔记----Bean的生命周期
- Spring 学习笔记---Bean的生命周期
- Spring学习笔记之---bean的生命周期
- 【Spring学习】Bean生命周期
- Spring学习笔记之Spring的bean生命周期
- Spring学习笔记之Spring的bean生命周期
- Spring学习笔记(2)-Spring中bean的生命周期
- Spring学习笔记(1):Bean的生命周期管理
- spring学习笔记(9)——bean的生命周期
- Spring学习笔记(六)----Bean的生命周期
- Spring学习笔记二: Bean装配及生命周期
- Spring框架学习笔记 bean的常见操作以及生命周期
- JavaEE Spring框架学习笔记一(理论学习之Bean生命周期)
- Spring学习笔记之管理Bean的生命周期
- 7.1.【Spring学习】Bean生命周期
- amlogic android 7.0 修改系统分区大小
- 数组翻转系列
- UVA 10474
- vue中的滚动监听
- 解决国内NPM安装依赖速度慢问题
- spring学习笔记八 bean生命周期
- java 文件下载
- Git学习——如何进入到某个本地git库
- 原生JS实现AJAX、JSONP及DOM加载完成事件,并提供对应方法
- UVA 639
- SpringAOP 详解
- 项目升级-加密的参数传递到后台然后解密(相当于重新封装下request)
- 个人微信扫码群发,微信扫描二维码群发系统开发
- Linux 系统编程基础