> 文档中心 > Springboot Aop 获取实体对象

Springboot Aop 获取实体对象


实战模拟

创建springboot 项目 导入springboot aop依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-aop</artifactId></dependency><dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson</artifactId>    <version>1.2.75</version></dependency>
编写测试接口
@RestController@RequestMappingpublic class TestController {    @PostMapping("/")    public String test(@RequestBody UserInfo info){ System.out.println("开始执行。。。。"); return "test";    }}
编写实体类
public class UseInfo {    private String id;    private String name; public String getId() { return id;    }    public void setId(String id) { this.id = id;    }    public String getName() { return name;    }    public void setName(String name) { this.name = name;    }}
编写Aop代码
@Component@Aspectpublic class TestAop {    @Pointcut("execution(* com.example.demo.controller.TestController.test(..))")    public void find(){}    //环绕通知,环绕增强,相当于MethodInterceptor    @Around("find()")    public Object arround(ProceedingJoinPoint pjp) { System.out.println("最开始执行方法....."); try {     //执行Before和controller里面的方法,如果不执行这句,会不执行切面的Before方法及controller的业务方法     Object o =  pjp.proceed();     System.out.println("执行完Before和controller之后执行的方法,结果是 :" + o);     return o; } catch (Throwable e) {     e.printStackTrace();     return null; }    }    @After("find()")    public void after(JoinPoint point){ System.out.println("方法最后执行.....");    }    @AfterReturning(pointcut = "find()")    public void afterReturning(JoinPoint point){ Object json = JSON.toJSON(point.getArgs()); List<UserInfo> modes = JSON.parseArray(json.toString(), UserInfo.class); UserInfo info = modes.stream().findFirst().get(); System.out.println(info.getId()); System.out.println(info.getName()); //这里可以做一些自己想要的操作 System.out.println("。。。。。。。。。。。。。。。。。。。。");    }}
结果展示

在这里插入图片描述
有用的话点希望点一下关注,后面分享更多有用知识😂