1.引入aop依赖
<!--AOP依赖包--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <!--这里顺带把lombok依赖引入--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency>
2.自定义注解
创建annotation包,创建aopAnnotation注解类
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) //指定注解放到方法上 public @interface aopAnnotation { String value() default ""; }
3 .将自定义注解aopAnnotation 放到要增强都方法上
@aopAnnotation @GetMapping("/getUserList") public List<String> getUser() { List<String> list = new ArrayList<>(); list.add("张三"); list.add("李四"); list.add("王五"); return list; }
4.定义切面和切点
创建aspect包,包下创建aopAspect类
@Aspect @Component @Slf4j public class aop {//切入点 controller包下并且带aopAnnptation注解的方法 @Pointcut("execution(* com.cx.controller.*.*(..)) && @annotation(com.cx.annotation.aopAnnotation)") void aopcut() {} //这里以环绕方法为例 @Around("aopcut()") Object around(ProceedingJoinPoint joinPoint) throws Throwable { //方法拦截前的逻辑 log.info("拦截成功"); //方法放行 Object proceed = joinPoint.proceed(); //方法执行后的逻辑 log.info("放行成功"); return proceed; } }
5.调用增强的方法
控制台查看拦截成功