0
点赞
收藏
分享

微信扫一扫

Bean的生命周期与用到的设计模式

1.图

Bean的生命周期与用到的设计模式_生命周期
检查是否实现了InitializingBean接口

Bean的生命周期与用到的设计模式_实例化_02

2.基础过程

BeanFactory是访问spring容器的根接口,几乎所有的bean都遵循以下生命周期。

createBeanInstance 实例化
populateBean 属性填充
initializeBean 初始化,实例化又分为调用invokeAwareMethods方法,执行PostProcessorsBefore方法,然后调用invokeInitMethods方法,最后执行PostProcessorsAfter方法

3.本质过程

1.实例化Bean,反射的方式生成对象:Bean如何实例化:createBeanInstance生成对象
2.填充属性,populateBean(),循环依赖(三级缓存)

3.调用Aware接口方法,invokeAwareMethod(完成BeanName,BeanFactory,BeanClassLoader对象的属性设置)
4.调用BeanPostProcessor前置方法:ApplicationContextPostProcessor,设置ApplicationContext,Environment,ResourceLoader等对象
5.调用init-method方法:invokeInitmethod(),判断是否实现了initializingBean接口,如果有,调用afterPropertiesSet方法设置bean对象。
6.调用BeanPostProcessor后置方法,Spring的Aop就是在此处实现的,AbstractAutoProxyCreator,注册Destruction相关的回调接口:钩子函数

7.获取到完整的对象,调用getBean进行对象获取
8.销毁:是否实现了DispoableBean接口,调用destryMethod方法

4.Spring的设计模式

1.单例模式,bean默认都是单例的
2.原型模式:作用域指定为prototype
3.工厂模式:BeanFactory
4.模板方法:postProcessorBeanFactory,onRefresh,initPropertyValue
5.策略模式:XmlBeanDefinitionReader,PropertiesBeanDefinitionReader:读取各种资源
6.观察者模式:listner,event,multicast:ApplcationEvent,ApplcationListener,ApplcationEventPublisher
7.适配器模式:Adaptor:MethodBeforeAdviceAdapter,ThrowsAdviceAdapter,AfterReturningAdapter:aop
8.装饰者模式:BeanWrapper,BeanDecorator
9.责任链模式:使用aop的时候会生成一个拦截器链
10.代理模式:动态代理
11.委托者模式:BeanDefinitionParserDelegate
12.访问者模式:BeanDefinitionVisit
13.构造者模式:BeanDefinitionBulder

注释:Bean的生命周期过于复杂,这里只是一个为了记录一下


举报

相关推荐

0 条评论