生活随笔
收集整理的这篇文章主要介绍了
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生命周期和后置处理器的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。