Spring-IOC学习笔记-06bean的生命周期
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-IOC学习笔记-06bean的生命周期相关的知识,希望对你有一定的参考价值。
bean的生命周期
生命周期就是bean的实例在IOC容器中从创建到销毁的过程
在spring中bean的生命周期很复杂,但是可以简单的理解为以下周期:
- 实例化
- 注入属性
- 调用实现接口方法
- 初始化
- 就绪
- 销毁
8.1 自定义初始化方法
在配置文件中,可以在bean的属性配置中使用
init-method
来指定自定义的初始化方法比如在实体类中添加了以下方法:
private void init(){ System.out.println("custom-init"); }
那么就可以在配置文件中去指定该方法为初始化方法
<bean id="man" class="com.moon.entity.FierceMan" init-method="init"/>
8.2 自定义销毁方法
销毁方法的自定义和初始化的一样
在实体类添加以下销毁方法:
private void destroy(){ System.out.println("custom-destroy"); }
在配置文件中配置:
<bean id="man" class="com.moon.entity.FierceMan" destroy-method="destroy"/>
8.3 BeanPostProcessor的实现
如果实现了该接口,那么在容器初始化bean的前后会调用BeanPostProcessor的对应方法
实现自己的BeanPostProcessor
public class MyBeanPostProcessor implements BeanPostProcessor {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
// 只判断bean的类型为FierceMan
if (bean instanceof FierceMan) {
System.out.println("BeanPostProcessor之前");
}
return bean;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof FierceMan) {
System.out.println("BeanPostProcessor之后");
}
return bean;
}
}
在配置文件中配置
<?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 http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--bean-->
<bean id="man" class="com.moon.entity.FierceMan" init-method="init" destroy-method="destroy"/>
<!--BeanPostProcessor-->
<bean id="beanPostProcessor" class="com.moon.entity.MyBeanPostProcessor"/>
</beans>
结果
以上是关于Spring-IOC学习笔记-06bean的生命周期的主要内容,如果未能解决你的问题,请参考以下文章
Spring-IOC学习笔记-08基于JavaConfig开发