您的位置:首页 > 编程语言 > Java开发

spring 8 bean配置--IOC容器中bean的生命周期

2016-07-01 09:57 555 查看
1 spring允许在bean生命周期的特定点执行定制的任务。

    springIOC容器对bean生命周期进行管理的过程:

  1 创建bean实例

  2 为bean属性设置值,对其他bean引用

  3 调用bean的初始化方法

4 bean使用

5 关闭容器,调用bean的销毁方法

在bean的声明你设置init-method 和 destroy-method属性,为bean指定初始化和销毁方法。

<bean id="car" class="mdd.study.beans.cycle.Car" 
init-method="init" 
destroy-method="destroy"
>
<property name="brand" value="Audi"></property>
</bean>

main方法测试:

package mdd.study.beans.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("beans-cycle.xml");

Car car=(Car)ctx.getBean("car");
System.out.println(car);

//关闭IOC容器
ctx.close();

}

}

2 bean的后置处理器

创建一个类实现BeanPostProcessor接口:

package mdd.study.beans.cycle;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.config.BeanPostProcessor;

public class MyBeanPostProcessor implements BeanPostProcessor{

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

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {

System.out.println("postProcessAfterInitialization"+bean+","+beanName);
return bean;
}

}

xml:

只用配置全路径即可:

<bean class="mdd.study.beans.cycle.MyBeanPostProcessor"></bean>

在中可以修改bean,甚至返回一个新的bean

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessAfterInitialization"+bean+","+beanName);
Car car=new Car();
car.setBrand("Ford");
return car;
}

<!-- 实现BeanPostProcessor接口, 并具体提供
postProcessBeforeInitialization(Object bean, String beanName):init-method前被调用
 和postProcessAfterInitialization(Object bean, String beanName):init-method后被调用
 的实现
 
bean: bean实例本身
beanName:IOC容器配置的bean的名字
返回值:是实际上返回给用户的那个bean,注意:可以在以上两个方法中修改返回的bean,甚至返回一个新的bean
 -->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: