SpringBean的生命周期
2021-06-12 16:54:14 0 举报
简单讲述,bean从生成到销毁的过程,中间会调用哪些类和方法
作者其他创作
大纲/内容
可以通过实现该方法获取Spring上下文,即ApplicationContext
如果 Bean 实现了 DisposableBean 接⼝,则 Spring 会调⽤ destory() ⽅法将 Spring 中的 Bean 销毁; 如果在配置⽂件中通过 destory-method 属性指定了 Bean 的销毁⽅法,则 Spring 将调⽤该⽅法对 Bean 进⾏销毁
xml中定义的init-method属性
第2步:设置属性
交给调用者
AnnotationConfigApplicationContext
调用destroy-method属性配置的销毁方法
bean的DI注入方式:1.构造函数 <constructor-arg>2.set方法 <property name=\"\" value=\"\">
BeanFactory接口
调用DisposableBean的destroy方法
ApplicationContext接口
此时的bean已经可以出来营业了
第3步:调用BeanNameAware的setBeanName方法
第1步:实例化Bean
第5步:调用ApplicationContextAware的setApplicationContext方法
前置:BeanFactory读取bean配置信息
Factory会将每个bean标签封装到BeanDefinition对象
singleton
SpringBean的生命周期图
ApplicationContext最常见的三种类型的实现:1通过classpath加载的;2通过文件系统加载;3.通过注解方式加载。
第9步:调用BeanPostProcessor的初始化后置方法
BeanFactory是Spring的顶层接口ApplicationContext是其下的子接口
第6步:调用BeanPostProcessor的初始化预处理方法
可以通过实现该方法获取Spring的工厂类
Bean销毁
放入Spring缓存池
注意:Spring 为 Bean 提供了细致全⾯的⽣命周期过程,通过实现特定的接⼝或 <bean> 的属性设置,都可以对 Bean 的⽣命周期过程产⽣影响。 虽然可以随意配置 <bean> 的属性,但是建议不要过多地使⽤ Bean 实现接⼝,因为这样会导致代码和 Spring 的聚合过于紧密
第4步:调用BeanFactoryAware的setBeanFactory方法
第7步:调用InitializingBean的afterPropertiesSet方法
SpringAOP就是利用它实现:不过是用的after方法(第9步)
FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
前置:merge操作,将配置信息进行整合(重复信息覆盖之类)
第8步:调用定制的初始化方法init-method
IoC实例化bean的三种方法:1.无参构造2.静态方法 <bean id=\"\" class=\"\" factory-method=\"\">3.实例化方法 <bean id=\"\" factory-bean=\"\" factory-method=\"\">
前置:Spring主要的类结构
初始化的时候,会给bean设置id
prototype
收藏
收藏
0 条评论
下一页