Spring-AOP什么时候来的,又是什么时候没的!

一.AOP是什么?

二.AOP有什么用?

三.AOP怎么实现?(本节主要讨论)

AOP的核心点牢记: 切点(pointCut) + 增强 (adviser)

会简单使用AOP之后的一些思考:

  1. 什么时候创建AOP切面?
  2. 怎么进入到AOP切面调用?
  3. AOP的增强adviser什么时候加载?
  4. advisers怎么确定的顺序?
  5. 被代理的方法,增强链式怎么进行调用?

 

1.什么时候创建AOP切面?--- 在Bean初始化的时候创建的AOP切面(AOP切面就是一个创建一个代理类proxy)

@1.....
getBean()
.....

@2.....
Object beanInstance = doCreateBean(beanName, mbdToUse, args);
.....

@3.....
//依赖注入操作
populateBean(beanName, mbd, instanceWrapper);
// 执行 beanPostprocess (各类增强,包括AOP代理) 中方法的操作
exposedObject = initializeBean(beanName, exposedObject, mbd);
.....

@4.....
//循环 调用所有加载的beanPostProcessors
wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
.....

@5.....
return wrapIfNecessary(bean, beanName, cacheKey);
.....

@6.....
// Create proxy if we have advice. 
//如果存在advice增强 , 也就是这个bean被 AspectJ 中的pointCut扫描到了,并且这个 AspectJ 存在增强方法
Object[] specificInterceptors = getAdvicesAndAdvisorsForBean(bean.getClass(), beanName, null);
.....

2.进入AOP切面调用?  ---  JDK 的动态代理-invoke调用

3.AOP的增强adviser什么时候加载? ----  @EnableAspectJAutoProxy --> AspectJAutoProxyRegistrar.class ---> AnnotationAwareAspectJAutoProxyCreator.class 该类被spring管理,在Bean初始化过程中,执行advisor 的扫描,整理,排序

4.advisers怎么确定的顺序?Order接口+ Comparator

 

5.图解aop链式调用过程

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值