aop注解配置切点 spring_Spring框架之AOP实现的第三种方式(通过注解实现)

在介绍第三种方式实现AOP前,先回顾第二种方式(自定义类)来实现AOP的过程。方式二是通过自定义类来实现AOP类的。但是该类会有较小的功能限制,该种处理方式不能对类内部进行操作玩耍,只能在我们所执行的方法体的前后添加相关内容,不能对类内部进行增添相关内容,详细介绍如下:首先,我们建立在方式一的基础上,现进行方式二的剖析。 1.新建一个包,在该包名下新建我们所需要的类,即我们要进行自定义的类,该包命名为diy,在该diy包名下新建类,为自定义类,命名为DiyPointCut,在该类中简单的定义两个方法,分别用于在执行方法体之前与执行方法体之后进行显示打印,如下图所示:

6524a7ce22d23b490a2c55b0b1fdd10f.png

2.该步为关键一步,要在配置文件中进行处理,所以打开我们的配置文件applicationContext配置文件,首先添加bean标签,将新写的DiyPointCut类注入到配置文件中,然后使用:aspect>标签来自定义切面,来引用刚注入的DiyPointCut类,然后标注切入点,切入点标注完事儿后,配置前置方法和后置方法,分别使用:before标签与:after标签来进行操作,将想要置于执行方法体之前打印的代码设置在before标签中,将想要置于执行方法体之后打印的代码设置在after标签中。具体代码如下图所示:  【注意】我们在后面使用第三种方式(即使用注解)实现AOP时,使用注解所代替的就是这部分配置代码,包含切面、切点等相关配置。

5aca207abd5ce8b6ac7276178d1a5c2b.png

3.编写测试代码该测试代码与方式一的测试代码完全一样,没必要进行修改,见下图所示: 31bc8d983bb8cb69a9826627e1e7b38a.png4.运行测试结果如下:

eab7c133c67d86f713306219159d67bb.png

这样,前置方法打印在前,后置方法打印在后,结果如上。之前分别使用了方式一(通过Spring API实现AOP)与方式二(通过自定义类实现AOP)这两种方式来实现AOP,现在我们再次简化代码,使用注解来进行相关的操作,进而实现通过注解实现AOP的操作。具体步骤如下:新建注解实现的增强类。然后:(1)在diy的包名下,新建注解实现的增强类,命名为AnnotationPointCut,在该类中编写相关代码,在类的名称之前添加注解 @Aspect,该注解代表这个注解标注这个类是一个切面,省去在配置文件中进行配置了。如下图中圈出所示:

1304830780940d2a27f02cb8c2fc3d87.png

(2)编写前置以及后置日志代码,编写好前置方法代码后,直接在该方法名前添加注解 @Before,该步等同于在配置文件中使用@After,该步等同于在配置文件中使用添加注解 @Before与注解 @After后,需要在注解后的括号中添加相关信息,添加切入点式子,该式子均为: "execution(*com.kuang.service.UserServiceImpl.*(..))"具体体现在如下所示图中:

f157787e082c8f9a2581a237d313acaf.png

(3)在配置文件中进行绑定注册,首先由于我们新建并编写了一个 AnnotationPointCut类,所以需要在配置文件中先通过bean标签来引入该类,然后由于我们使用了注解,所以需要开启注解支持。使用注解实现AOP,在配置文件中我们只需要做到这两步即可。具体的配置文件代码如下图所示: 45c8438e09861748185890dc82595cdb.png(4)此时,我们前面做了以下步骤:新建了AnnotationPointCut类,添加了切面注解,定义了前置以及后置方法,添加了切入点注解,编写了配置文件这些。现我们在测试类进行测试,测试代码不变,如下: d47636dfcc8b4e1a5f9f5de9a8381f9e.png测试结果如下图所示:

7064e21a2f2baa556a8c3192dcc74f69.png

(5)这是编写了前置后置代码并进行了测试,下面我们再在新建类中添加一个环绕方法,具体如下图所示(环绕方法略有特殊之处,具体请注意下图):

2f80475490c2c7f46488ad685130a188.png

(6)在测试代码中再次进行运行测试,这次运行测试是在添加了环绕方法之后的测试,测试结果如下图所示( 注意环绕方法添加之后,与其他前置后置代码的执行顺序):

fd49e966bfcecbe47a7245e5c5f6b345.png

总结而言,第三种方式与第二种方式,第三种方式使用注解来实现其实就是相当于将第二种方式使用配置文件实现的相关内容使用注解进行了一个代替!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值