Spring 3.0 AOP 之 AOP 术语 (一)
关于AOP、之前我已写过一个系列的随笔: 《自己实现简单的AOP》,它的关注点在于实现、实现语言是C#,实现方式为 自定义实现 RealProxy 抽象类、重写Invoke方法,以便进行方法调用的拦截、借此实现AOP。感兴趣的园友可以去瞅瞅。
今天、我们来看一下Spring中的AOP,本随笔着重关注AOP术语。
先说一句废话:如果你对AOP不是很熟悉、第一次看到这些术语可能会有点迷惑,不过没有关系、坚持继续向下看,然后再反过来看一遍,有些东西就能恍然大悟了。
连接点(Joinpoint)
连接点:连接点、点,它是一个位置、是指程序执行的特定位置,如:类初始化前、类初始化后、某个方法执行前、某个方法执行后、方法抛出异常之后 等等位置。而,Spring仅支持 方法的连接点, 即仅可以在方法执行前、方法执行后、方法抛出异常时 及 方法执行前后 4 类连接点。
我们都知道黑客攻击系统都需要找到突破口,如果没有突破口就没法进行攻击。在某种程度上来说、AOP有点像黑客(因为它要向程序中织入代码逻辑),而连接点就是这个突破口。
连接点需要由两点信息来确定:一个是 方法 。第二个是 相对于方法的执行方位(比如:方法执行“前”、方法执行“后”、方法执行“前后”、方法抛出异常“时”)。【执行方位 存在于 增强中】
切点(Pointcut)
我(本随笔作者)对切点的理解为,切点:查找连接点的条件,更确切一点是查找连接点所表示的方法的条件。
增强(Advice)
增强:即一段代码,是想要织入的代码逻辑。 并且还附带了 相对于方法的执行方位。
因此:切点 + 增强中的 相对于方法的执行方位 = 连接点。
目标对象(Target)
是需要织入增强的目标类。
引介(Introduction)
引介:引介是一种特殊的增强:它可以为目标类增加属性和方法,以此、可以实现新接口。
织入(Weaving)
织入:织入是将增强添加到目标类具体连接点上的过程,AOP就像一台织布机,将目标类、增强或引介通过AOP这台织布机天衣无缝地编织在一起。
代理(Proxy)
一个类被AOP织入增强后,就产生了一个结果类,这个结果类就是代理。它融合了原类和增强逻辑。代理类 和 原类 拥有相同的接口,所以可以像原类一样调用代理类。
切面(Aspect)
切面由 切点 和 增强(或引介)组成,它既包括了横切逻辑、也包含了连接点的定义,Spring AOP 就是负责实施切面的框架,它将切面所定义的横切逻辑织入切面中所指定的连接点上。
AOP 的工作重心在于如何将增强应用于目标对象的连接点上。这里包含两个工作:
1、如何通过切点 和 增强 定位连接点。
2、如何在增强中编写横切逻辑代码。
本系列随笔将重点围绕破以上两点来展开进行。
声明:《Spring 3.0 AOP》 系列随笔为《Spring 3.0 就是这么简单》读书笔记、并附加作者自己的认知。
(未完待续...)
相关文章
- Spring学习笔记(三)——Spring注解开发&spring与Junit整合测试
- Spring 全家桶之 Spring Framework 5.3(二)- Part A
- Mybatis与Spring集成:SqlSessionTemplate[通俗易懂]
- AOP概念与原理 | Spring学习笔记2.1
- Spring Boot条件化自动装配
- 细说Spring——AOP详解(AOP概览)
- Spring之AOP入门篇
- Spring——【第一章入门】:核心Aop与Ioc
- Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
- 杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
- 【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知Advice注解
- Spring 井喷式更新周,你还跟得上吗?
- Spring:AOP
- Spring Aop 底层责任链思路实现
- Security安全认证 | Spring Boot如何集成Security实现安全认证
- Spring Security OAuth2.0实现
- Spring Cloud Task 集成Spring Cloud Stream(二)
- Spring AOP(面向切面编程)
- 使用Spring定时任务并且通过AOP监控任务执行情况详解编程语言
- spring的AOP(四)—-Spring AOP 编程(Advisor)详解编程语言
- spring的AOP(二)—-JDK动态代理详解编程语言
- Spring Aop 源码实现原理分析详解编程语言
- Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务详解编程语言
- Spring AOP之Introduction(@DeclareParents)简介详解编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言
- Spring Boot(十二):spring boot如何测试打包部署详解编程语言
- 基于properties文件的Spring Boot多环境切换详解编程语言
- Spring MVC Hibernate-Validator数据验证实例