代码拉取完成,页面将自动刷新
Spring AOP
aspect一定要给spring去管理
pointcut:切点表示连接点的集合
joinpoint:连接点表示目标中的方法
weaving:把代理逻辑加入到目标对象上的过程叫做织入
advice:通知
通知类型:
before
after throwing
after(finally)
around advice
proceedingjoinpoint和joinpoint的区别
Spring实现AOP的思路:
1:创建AnnotationAwareAspectJAutoProxyCreator对象
2:扫描容器中的切面,创建PointcutAdvisor对象
3:生成代理类
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary方法的处理逻辑
1.如果已经处理过,且该bean没有被代理过,则直接返回该bean
2.如果该bean是内部基础设置类Class 或 配置了该bean不需要代理,则直接返回bean(返回前标记该bean已被处理过)
3.获取所有适合该bean的增强Advisor如果增强不为null,则为该bean创建代理对象,并返回结果标记该bean已经被处理过
继承自Advice、Pointcut、Advisor、AopInfrastructureBean无法被增强
如果一个bean继承自Advice、Pointcut、Advisor、AopInfrastructureBean或者带有@Aspect注解,或被AjcAspectJ编译器)
编译都会被认定为内部基础设置类
proxy-target-class:
强制使用CGLib为目标对象创建代理(如果没有设置该属性的话,如果目标对象实现了至少一个接口
则会使用JDK的动态代理)。但是,CGLib的有两个问题需要考虑:
1.无法代理final class,因为CGLib是通过生成子类来创建代理对象的
2.需要无参构造函数
expose-proxy:
为了解决目标对象内部的自我调用时,无法实现切面的增强的问题
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。