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
-->
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
-->
相关文章推荐
- JAVA读取本地txt文件
- Ubuntu 14.04下使用串口库serial
- java运行时异常与一般异常有何异同?
- struts2中Action配置中的各项默认值和result的各种转发类型
- Java中避免空指针的几个方法
- Java中避免空指针的几个方法
- Java中避免空指针的几个方法
- Eclipse中使用github
- 假如已经安装了 新的JDK版本 Android Studio 模拟器预览还是提示版本 更新
- 开博第一天,给自己列个计划吧
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- JAVA实现地图最短路径问题
- eclipse 和 android studio 快捷键对比
- java 通过 SSL 发送 Post
- C中char在java中处理
- 查看java进程中哪个线程在消耗系统资源
- @ResponseBody注解
- JDK 切换备注
- Eclipse的team下的 SVN update to HEAD 和 Synchronize with repository 的区别
- STS-创建spring配置文件