1 Star 0 Fork 0

方温南/学习文档

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
SpringAOP 1.77 KB
一键复制 编辑 原始数据 按行查看 历史
方温南 提交于 2020-07-23 18:01 +08:00 . 2020-07-23
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:
为了解决目标对象内部的自我调用时,无法实现切面的增强的问题
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/nanwenfang/learning_documents.git
git@gitee.com:nanwenfang/learning_documents.git
nanwenfang
learning_documents
学习文档
master

搜索帮助