(10)Spring学习记录---Spring_bean(bean的生命周期)

Bean的生命周期方法 

过程: 

1.构造器

2.为bean设置值

3.调用bean的初始化方法

4.bean使用

5.当容器关闭时,调用bean 的摧毁方法

实例:

1.Car.class

public Car() {
		super();
		System.out.println("Car Construct....");
	}
	
	private String band;

	public void setBand(String band) {
		System.out.println("Set car...");
		this.band = band;
	}

	@Override
	public String toString() {
		return "Car [band=" + band + "]";
	}
	
	public void init() {
		System.out.println("Car init....");
	}
	
	public void distory() {
		System.out.println("Car distory....");
	}

2.bean_cycle.xml

扫描二维码关注公众号,回复: 3647459 查看本文章
<bean id="car" class="jjh.test.cycle.Car" init-method="init" destroy-method="distory">
		<property name="band" value="Audi"></property>
	</bean>

3.运行

可以看到bean的生命周期的过程

Bean后置处理器

1.MyBeanPostProcessor

@Override
	public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
		System.out.println("postProcessAfterInitialization"+arg0+" "+arg1);
		return arg0;
	}

	@Override
	public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
		System.out.println("postProcessBeforeInitialization"+arg0+" "+arg1);
		return arg0;
	}

 2.bean-cycle.xml

<bean id="car" class="jjh.test.cycle.Car" init-method="init" destroy-method="distory">
		<property name="band" value="Audi"></property>
	</bean>
	
	<!-- 实现bean接口 具体实现两个方法 
		Object postProcessAfterInitialization(Object bean, String beanName):init-method前调用
		Object postProcessBeforeInitialization(Object bean, String beanName):init-method后调用
		
		bean:bean实例本身
		beanName: IOC 容器配置bean的名字
		返回值:实际上是返回值给原bean *可以在两个方法中修改返回bean
	-->
	<!-- 配置bean的处理器 不需要配置id 自动识别-->
	<bean class="jjh.test.cycle.MyBeanPostProcessor"></bean>

3.结果

4.步骤

尝试在bean实例创建后修改bean,通过postProcessAfterInitialization()方法

在方法中新建一个实例,修改他的属性名

在方法初始化之后car的值被修改了

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/83068798
今日推荐