spring Bean 的生命周期
2016-11-18 15:02
661 查看
Bean的生命周期
Bean生命周期分类
1.Bean自身方法:构造方法,set方法,init-method,destroy-method方法2.Bean级生命周期接口方法:BeanNameAware , BeanFactoryAware
3.容器级生命周期接口方法:InstantiationAwareBeanPostProcessor , BeanPostProcessor,不由Bean实现
例子
Bean类package com.imooc.lifecycle; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; public class BeanLifeCycle implements InitializingBean ,DisposableBean , BeanNameAware , BeanFactoryAware{ @SuppressWarnings("unused") private String name ; public void setName(String name) { this.name = name; System.out.println("设置属性值"); } public BeanLifeCycle(String name) { super(); this.name = name; System.out.println("调用构造器"); } public void defautInit() { System.out.println("Bean defautInit."); } public void defaultDestroy() { System.out.println("Bean defaultDestroy."); } @Override public void destroy() throws Exception { System.out.println("DisposableBean ::: Bean destroy."); } @Override public void afterPropertiesSet() throws Exception { System.out.println("InitializingBean :::: Bean afterPropertiesSet."); } public void start() { System.out.println("init-method中配置的初始化方法 :::: Bean start ."); } public void stop() { System.out.println("destroy-method中配置的销毁方法:::: Bean stop."); } @Override public void setBeanName(String arg0) { System.out.println("BeanNameAware::::" + arg0); } @Override public void setBeanFactory(BeanFactory arg0) throws BeansException { System.out.println("BeanFactoryAware ::::" + arg0.getClass().getName() ); } }
BeanPostProcessor
package com.imooc.lifecycle; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; public class ExampleBeanPostProcessor implements BeanPostProcessor{ @Override public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException { System.out.println("BeanPostProcessor:::::postProcessAfterInitialization " + arg1); return arg0; } @Override public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException { System.out.println("BeanPostProcessor:::::postProcessBeforeInitialization " + arg1); return arg0; } }
InstantiationAwareBeanPostProcessor
package com.imooc.lifecycle; import java.beans.PropertyDescriptor; import org.springframework.beans.BeansException; import org.springframework.beans.PropertyValue; import org.springframework.beans.PropertyValues; import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor; public class ExampleInstantionAwareBeanPostProcessor implements InstantiationAwareBeanPostProcessor { @Override public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException { System.out.println("InstantionAwareBeanPostProcessor::::postProcessAfterInitialization :: " + arg1); return arg0; } @Override public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException { System.out.println("InstantionAwareBeanPostProcessor::::postProcessBeforeInitialization :: " + arg1); return arg0; } @Override public boolean postProcessAfterInstantiation(Object arg0, String arg1) throws BeansException { System.out.println("InstantionAwareBeanPostProcessor::::postProcessAfterInstantiation :: " + arg1); return true; } @Override public Object postProcessBeforeInstantiation(Class<?> arg0, String arg1) throws BeansException { System.out.println("InstantionAwareBeanPostProcessor::::postProcessBeforeInstantiation :: " + arg1); return null; } @Override public PropertyValues postProcessPropertyValues(PropertyValues arg0, PropertyDescriptor[] arg1, Object arg2, String arg3) throws BeansException { System.out.println("====================PropertyValues==================="); PropertyValue[] ps = arg0.getPropertyValues() ; for(PropertyValue p : ps){ System.out.println(p.getName() + " " + p.getValue()); } System.out.println("====================PropertyValues==================="); // TODO Auto-generated method stub return arg0; } }
配置文件
<?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" default-init-method="defautInit" default-destroy-method="defaultDestroy"> <bean id="beanLifeCycle" class="com.imooc.lifecycle.BeanLifeCycle" init-method="start" destroy-method="stop" > <constructor-arg name="name" value="value"></constructor-arg> <property name="name" value="property"></property> </bean> <bean class="com.imooc.lifecycle.ExampleInstantionAwareBeanPostProcessor" ></bean> <bean class="com.imooc.lifecycle.ExampleBeanPostProcessor" ></bean> </beans>
参考
极客学院教学视频相关文章推荐
- spring bean的生命周期
- Spring Bean的生命周期之我的理解(三)------BeanFactory和FactoryBean
- Spring Bean的生命周期之我的理解(四)------AbstractAutowireCapableBeanFactory
- Spring Bean的生命周期(非常详细)
- Spring Bean生命周期
- Spring Bean的作用域及生命周期
- Spring Bean的生命周期
- Spring Bean的生命周期
- Spring bean的生命周期
- Spring Bean的生命周期详解
- Spring Bean的生命周期
- Spring Bean的生命周期(转)
- Spring Bean的生命周期
- Spring Bean的生命周期
- spring bean的生命周期
- spring Bean的生命周期
- Spring bean 的生命周期
- Spring Bean的生命周期
- spring bean的生命周期
- Spring Bean的生命周期