乐趣区

关于spring:SpringAop中jdk和CGlib代理

一,Aop 概述

1. Aop 是什么?

AOP(Aspect Orient Programming)是一种设计思维,是软件设计畛域中的面向切面编程,它是面向对象编程 (OOP) 的一种补充和欠缺。它以通过预编译形式和运行期动静代理形式,实现在不批改源代码的状况下给程序动静对立增加额定性能的一种技术

2. Aop 相干术语剖析

  1. 切面(aspect): 横切面对象, 个别为一个具体类对象(能够借助 @Aspect 申明)

2.告诉 (Advice): 在切面的某个特定连接点上执行的动作(扩大性能),例如 @around,@before,@after 等。
3. 连接点 (joinpoint): 程序执行过程中某个特定的点,个别指被拦挡到的的办法。
4. 切入点 (pointcut): 对多个连接点(Joinpoint) 一种定义, 个别能够了解为多个连接点的汇合。

3.Aop 疾速实际

3.1 阐明:
3.1.1: 增加 Aop 启动依赖
<dependency>

       <groupId>org.springframework.boot</groupId>

       <artifactId>spring-boot-starter-aop</artifactId>

</dependency>
3.1.2: 注解阐明

1.@Aspect 注解用于标识或者形容 AOP 中的切面类型,基于切面类型构建的对象用于为指标对象进行性能扩大或控制目标对象的执行。
2.@Pointcut注解用于形容切面中的办法,并定义切面中的切入点(基于特定表达式的形式进行形容),在本案例中切入点表达式用的是 bean 表达式,这个表达式以 bean 结尾,bean 括号中的内容为一个 spring 治理的某个 bean 对象的名字。
3.@Around注解用于形容切面中办法,这样的办法会被认为是一个盘绕告诉(外围业务办法执行之前和之后要执行的一个动作),@Aournd 注解外部 value 属性的值为一个切入点表达式或者是切入点表达式的一个援用 (这个援用为一个 @PointCut 注解形容的办法的办法名)。
4.ProceedingJoinPoint 类为一个连接点类型,此类型的对象用于封装要执行的指标办法相干的一些信息。只能用于 @Around 注解形容的办法参数。

4.Aop 实操演练

(注:idea,spring 我的项目)

退出移动版