Springboot+自定义注解+自定义AOP前置增强+自定义异常+自定义异常捕获
2021-02-13 03:17
标签:res 前置 spec 方法 group lombok artifact ima element 想要在一些方法执行之前要进行一个逻辑判断, 本来想使用拦截器来进行拦截但是后来还是说声算了. 想到使用AOP的前置增强和自定义异常和自定义异常捕获可以解决这个问题, 一次性用了这么多,就是想把之前比较模糊的东西重新拿起来 1.我们先自定义一个注解 2.自定义一个异常类 我们首先要先导入AOP依赖 异常捕获 3.然后我们自定义一个切面类 测试
END Springboot+自定义注解+自定义AOP前置增强+自定义异常+自定义异常捕获 标签:res 前置 spec 方法 group lombok artifact ima element 原文地址:https://www.cnblogs.com/doge-elder/p/12728478.html开篇
1 /**
2 * @program: shiro-demo
3 * @description: 自定义注解
4 * @author: @DogElder
5 * @create: 2020-04-18 20:42
6 **/
7 ?
8 @Target(ElementType.METHOD)
9 @Retention(RetentionPolicy.RUNTIME)
10 public @interface TestAnnotation {
11 }
1
2 dependency>
3 groupId>org.springframework.bootgroupId>
4 artifactId>spring-boot-starter-aopartifactId>
5 dependency>
1 import lombok.Data;
2 ?
3 /**
4 * @program: shiro-demo
5 * @description: 自定义异常类
6 * @author: @DogElder
7 * @create: 2020-04-18 21:11
8 * 要继承RuntimeException
9 **/
10 @Data
11 public class TestExcption extends RuntimeException {
12
13 private String code;
14 private String message;
15
16 // 这个地方需要写一个有参构造
17 public TestExcption(String code, String message) {
18 this.code = code;
19 this.message = message;
20 }
21 }
1 /**
2 * @program: shiro-demo
3 * @description: 异常处理
4 * @author: @DogElder
5 * @create: 2020-04-18 21:20
6 **/
7 @RestControllerAdvice
8 public class TestExceptionHandler {
9 ?
10 ?
11 /**
12 * @Description: 异常捕获
13 * @Param: java.util.Map
1 /**
2 * @program: shiro-demo
3 * @description: 自定义切面
4 * @author: @DogElder
5 * @create: 2020-04-18 20:49
6 **/
7 @Configuration
8 @Aspect
9 public class TestAop {
10 ?
11
12 /**
13 * @Description: 声明一个切入点
14 * @Param: void
15 * @return: void
16 * @Author:@Dog_Elder
17 * @Date: 2020/4/18
18 * @Pointcut 声明一个切入点 参数为切点表达式
19 * 注意: 这里的切入点是@annotation注解类的全路名 (看你们声明的切入点是在那里进行更换)
20 */
21 @Pointcut("@annotation(com.shiro.shiro_demo.config.annotation.TestAnnotation)")
22 public void testPointCut() {
23 ?
24 }
25 ?
26 /**
27 * @Description: 声明一个前置增强
28 * @Param: void
29 * @return: void
30 * @Author:@Dog_Elder
31 * @Date: 2020/4/18
32 * @Before 前置增强 参数为切点方法
33 * 注意:抛异常 抛异常 抛异常 throws RuntimeException 和 throw
34 *
35 */
36 @Before("testPointCut()")
37 public void testBefore() throws RuntimeException{
38 // 这里可以实现你的逻辑代码 (因为是demo)
39 // 我就写一个简单的小例子
40 int n=1;
41 if (n!=0) {
42 //这个地方就是我们写的自定义的异常
43 throw new TestExcption("401","无权限");
44 }
45 }
46
47 }
下一篇:Python常用命令之集合
文章标题:Springboot+自定义注解+自定义AOP前置增强+自定义异常+自定义异常捕获
文章链接:http://soscw.com/essay/54714.html