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("。。。。。。。。。。。。。。。。。。。。"); }}