--前言:在以往所有项目中都使用过拦截器与AOP,但是从来只是复用别人的轮子,今天遇到一个重复请求接口的BUG,想着后端校验Token来判断是否重复请求,于是想自己造一个轮子实现。
AOP
AOP:面向切面编程,Spring的核心之一,什么是切面?好处是什么?我的理解就是在一个业务系统中选择一个切点进行切入,书写与业务无关的,但是可以给多种业务进行服务,调用。减少重复性的代码,可以被多个接口调用而不用在多个接口重复书写代码,降低系统的耦合度,并有利于未来的扩展与维护。这就是切面。
如何进行实现呢?实现AOP有两种方式,一种是xml进行配置,一种是用注解。我们先看使用xml是如何配置的。
1.我们先创建一个切面类:ExchangeAspect
切面类在其中可以实现aop的多个通知类型
1:before前置通知,在接口执行前,可获取request中的参数,无法终止调用接口。
2:after后置通知,在接口执行后执行。
3:afterReturn后置返回通知,在接口返回后执行。
4:afterThrowing异常通知,在接口抛出异常执行。
5:around环绕通知,可以在环绕通知里选择是否继续执行接口,也可对接口的返回值进行处理。
2.在spring-mvc XML配置文件中配置切面切点等。
定义切面类与切点。切点的实现方法 执行接口,发现切面已经成功运行,因为没有抛出异常所有没有异常通知使用注解进行AOP配置
1.在切面类使用注解
@Component、@Aspect这两个注解声明切面类2.定义切点
注解@Pointcut对哪个接口进行切面。3.定义切面方法
使用@before、@After等注解实现XML相同的功能4.XML
最后还是要配置一点XML
在XML中开启注解,并且自动扫描包实现AOP的两种方法就此完成了。
网友评论