Spring.容器生命周期

目录

容器生命周期图

 生命周期解析

容器

BeanFactoryPostProcessor

Bean外

BeanPostProcessor

InstantiationAwareBeanPostProcessor

Bean内

BeanNameAware

BeanFactoryAware

InitializingBean

DisposableBean

init-method&destroy-method


Spring就是一个用来创建和管理 类对象的Map。

这个Map咱们称为容器。

这个容器本身会在一个类中作为静态变量存在,那么这个容器本身就有他的生命周期。

容器会对某个Bean创建对象,这个对象也具有自己的生命周期。

所以容器生命周期分为:容器本身的生命周期 + Bean的生命周期。

容器生命周期图

​​​​​​​

 生命周期解析

	第一步:容器构造,必要的工具和类创建
BeanFactory 处理器 创建
Bean 处理器创建
BeanInstantiaction Bean实例化 处理器 创建
预留接口:BeanFactory.postProcess

	第二步:实例化
HelloWord helloword = new HelloWord();
创建示例,并调用构造方法


预留接口:
BeanInstantiaction befor实例化,构造方法之前
BeanInstantiaction after 实例化,构造方法之后
BeanInstantiaction 处理属性值

	第三步:初始化和属性注入

1. 框架初始化:注入属性,调用set方法
预留接口:
setBeanName 获取bean名称接口
setBeanFactory 获取bean工厂类接口

2.自定义初始化init-method
自定义 初始化方法
在所有框架处理之后执行

以及:设置完属性后框架调用
afterPropertiesSet  属性设置之后


预留接口:
执行init-method之前,BeanPostProcesser.beforeInitialization
执行afterPropertiesSet 之后,BeanPostProcesser.afterInitialization

	析构
destroy-method方法
接口:DisposableBean.destroy()方法

容器

BeanFactoryPostProcessor

org.springframework.beans.factory.config.BeanFactoryPostProcessor

方法:
void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) 
throws BeansException;

可以获取BeanFactory。

Bean外

BeanPostProcessor

Bean初始化前后
org.springframework.beans.factory.config.BeanPostProcessor

Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException

Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException

Initialization 初始化

InstantiationAwareBeanPostProcessor

实例化前后
org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor

extends BeanPostProcessor

Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) 
throws BeansException

boolean postProcessAfterInstantiation(Object bean, String beanName) 
throws BeansException

PropertyValues postProcessPropertyValues(
			PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) 
throws BeansException


Instantiation 实例化

Bean内

BeanNameAware

获取Bean Name
org.springframework.beans.factory.BeanNameAware

void setBeanName(String name);

BeanNameAware.setBeanName(String name)

BeanFactoryAware

获取BeanFactory
org.springframework.beans.factory.BeanFactoryAware

void setBeanFactory(BeanFactory beanFactory) throws BeansException;

BeanFactoryAware.setBeanFactory(BeanFactory beanFactory)

InitializingBean

属性设置后调用。

org.springframework.beans.factory.InitializingBean

void afterPropertiesSet() throws Exception;

InitializingBean.afterPropertiesSet()

DisposableBean

org.springframework.beans.factory.DisposableBean

void destroy() throws Exception;

DisposableBean.destroy()

init-method&destroy-method

@Bean 注解 或者XML中配置Bean指定

@Bean
initMethod
destroyMethod


<bean id="initSequenceBean " 
  class="com.example.InitSequenceBean" init-method="initMethod"/>


end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值