ioc生命周期以及aop流程
2021-09-01 14:12:24 2 举报
ioc
作者其他创作
大纲/内容
initApplicationEventMulticaster()
refresh()入口
registerListeners()
代理对象调用目标方法proxy.method();
不相等
CglibMethodInvocation.proceed()调用proceed方法
proceed()判断当前拦截器下标是否等于 spring中常量拦截器总数-1
无
创建beanFactory
initMessageSource()
invokeJoinpoint()span style=\"font-size: inherit;\
getSingleton(beanName)从beanFactory获取bean
finishBeanFactoryInitialization()
doCreateBean()实际开始创建bean的方法
有
相等
beanPostProcessorAfterInitalzationbean后置处理器after
获取到的bean返回
调用beanFactory的后置处理器
onRefresh()
getInterceptorsAndDynamicInterceptionAdvice获取拦截通知链使用的时责任链模式
cancelRefresh()
beanPostProcessorBeforeInitialzation()bean的后置处理器before
代理调用方法结束
wrapIfNecessary()会在此方法判断是否对bean 如果需要进行代理createProxy创建返回代理对象
最终通过反射方式getInstance()对bean进行实例化注:并未初始化
判断属性value instance of RuntimeBeanReference
preInstantiateSingletons()
拿到bean后
createBeanInstance()开始进行创建bean实例
创建bean的PostProcessor后置处理器放入beanFactoryspan style=\"font-size: inherit;\
从earlySingletonObjects二级缓存中获取
initializeBean()进行bean的初始化
文本
注册监听事件初始化
因为三级缓存类是接口编程直接调用getObject()函数执行createBean
populateBean()进行填充bean的属性
是否实现这个接口hasInstantiationAwareBeanPostProcessors执行后置处理器时
obtainFreshBeanFactory()
AspectJAfterThrowingAdviceAfterReturningAdviceInceptorAspectJAfterAdviceMethodBeforeAdviceInceptor如果有AroundAdvice是在这几个执行完才会执行的注:调用各个拦截器的方法都是通过反射进行调用的
finishRefresh()
invokeInitMethods()通过反射调用初始化方法()
invokeAwareMethods()span style=\"font-size: inherit;\
整个bean生命周期结束
设置激活状态为false
从一级缓存获取
applyPropertyValues()进行填充属性值操作
调用doGetBean实际做事的都是do开头的
初始国际化资源
AOP
2.进入cglibAopProxy的incepter()返回List chain
invokeBeanFactoryPostProcessors()
resolveValueIfNecessary()如果有必要会进行调用这个方法解析值
当前下标的拦截器调用自己的invoke()
registerBeanPostProcessors()
destroyBeans()
IOC生命周期
直接返回循环下一个bean
prepareRefresh()
注:当前框中的逻辑判断为了处理循环依赖问题
当前填充属性线路就是为了解决循环依赖
prepareBeanFactory()
收藏
0 条评论
下一页