SpringAOP基本流程
2022-03-15 18:33:07 6 举报
SpringAOP基本流程
作者其他创作
大纲/内容
返回值不为null
执行所有后置处理器SmartInstantiationAwareBeanPostProcessor的getEarlyBeanReference方法
在Bean实例化之前,先给一个机会,看看缓存里有木有,有就直接返回得了
执行所有的BeanPostProcessor#postProcessAfterInitialization 初始化之前的处理器方法规则:只要谁反回了null,后面的就都不要执行了
返回值为null
AbstractAutoProxyCreator.postProcessAfterInitialization()
把它放到缓存advisedBeans中,值为fasle,标记他是不需要代理的类
从缓存中获取已经创建过代理对象的cachekey
如果cachekey不存在,这说明还没有代理
同一方法
Bean的初始化
cachekey存在
调用构造器
结束
AbstractAutoProxyCreator.postProcessBeforeInstantiation()
是否可以获取到所匹配的advisors
cachekey存在,这说明代理类已经创建
判断当前Bean在缓存advisedBeans中的值是否为false,如果是false,那么表情当前bean不需要代理
这里AnnotationAwareAspectJAutoProxyCreator没有做处理
执行容器中InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()
执行BeanPostProcessor的postProcessAfterInitialization()
创建好后缓存起来 避免重复创建
获取当前beanclass所匹配的advisors
否
生成代理类
if (Boolean.FALSE.equals(this.advisedBeans.get(cacheKey))) { return bean;}
入口
不需要代理
执行所有的BeanPostProcessor#postProcessBeforeInitialization 初始化之前的处理器方法规则:只要谁反回了null,后面的就都不要执行了
0 条评论
下一页