bean执行流程
2021-08-17 09:27:25 20 举报
bean初始化
作者其他创作
大纲/内容
bean的初始化
可以获取bean的名称
执行InitializingBean.afterPropertiesSet()的方法
容器初始化
只能修改已经存在属性的属性值
容器级别,对所 有的bean起作用
执行BeanNameAware的setBeanName方法
构造函数
可以获取beanFactory,然后通过beanFactory来访问bean,但是会与spring的api耦合,不推荐
bean级别,只对实 现方法的bean起作用
执行InstantiationAwareBeanPostProcessor的postProcessAfterInitialization方法
不需要通过反射调用,执行bean的自定义逻辑,和spring强依赖。效率高常用于:判断内部属性有没有注入成功
执行BeanPostProcessor的PostProcessorsBeforeInitialization方法
可以在自定义初始化之后执行对应内容bean容器级别:对所有的bean起作用
可以用来关闭某些资源
执行@PostConstruct方法
在这里获取bean的属性值
执行InstantiationAwareBeanPostProcessor的postProcessPropertyValues方法
执行BeanFactoryAware的setBeanFactoryAware方法
调用DisposableBean.destroy()方法
可以在自定义初始化之前执行对应内容bean容器级别:对所有的bean起作用
执行InstantiationAwareBeanPostProcessor的PostProcessorsBeforeInitialization方法
调用BeanFactoryPostProcessor的postProcessBeanFactory方法
实例化beanPostProcessor类
bean的实例化
注入属性
实例化BeanFactoryPostProcessor类
通过反射调用,可以实现bean的初始化逻辑。消除了对spring的依赖也可以解决静态属性注入
通过反射调用,可以解决静态属性bean无法注入,可以用来进行属性赋值
bean的销毁
将bean相关的postProcessor注册,并且实例化对应的postProcessor
调用<bean>的destroy-method属性指定的初始化方法
实例化InstantiationAwareBeanPostProcessor(Adapter)
执行BeanPostProcessor的postProcessAfterInitialization方法
调用init-method属性指定的初始化方法
0 条评论
下一页