spring boot aop 配置 使用

清疚 2022-05-13 07:22 217阅读 0赞
  1. 1. 首先要把aop的依赖加进来
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-aop</artifactId>
  5. </dependency>
  6. 2. 根据自己的需求,创建相关的切面
  7. package com.example.aop;
  8. import org.aspectj.lang.JoinPoint;
  9. import org.aspectj.lang.ProceedingJoinPoint;
  10. import org.aspectj.lang.annotation.*;
  11. import org.springframework.stereotype.Component;
  12. import org.springframework.web.context.request.RequestContextHolder;
  13. import org.springframework.web.context.request.ServletRequestAttributes;
  14. import javax.servlet.http.HttpServletRequest;
  15. import java.util.Arrays;
  16. /**
  17. * Created by wuwf on 17/4/27.
  18. * 日志切面
  19. */
  20. @Aspect
  21. @Component
  22. public class LogAspect {
  23. @Pointcut("execution(public * com.example.service.*.*(..))")
  24. public void webLog(){}
  25. @Before("webLog()")
  26. public void deBefore(JoinPoint joinPoint) throws Throwable {
  27. // 接收到请求,记录请求内容
  28. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  29. HttpServletRequest request = attributes.getRequest();
  30. // 记录下请求内容
  31. System.out.println("URL : " + request.getRequestURL().toString());
  32. System.out.println("HTTP_METHOD : " + request.getMethod());
  33. System.out.println("IP : " + request.getRemoteAddr());
  34. System.out.println("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
  35. System.out.println("ARGS : " + Arrays.toString(joinPoint.getArgs()));
  36. }
  37. @AfterReturning(returning = "ret", pointcut = "webLog()")
  38. public void doAfterReturning(Object ret) throws Throwable {
  39. // 处理完请求,返回内容
  40. System.out.println("方法的返回值 : " + ret);
  41. }
  42. //后置异常通知
  43. @AfterThrowing("webLog()")
  44. public void throwss(JoinPoint jp){
  45. System.out.println("方法异常时执行.....");
  46. }
  47. //后置最终通知,final增强,不管是抛出异常或者正常退出都会执行
  48. @After("webLog()")
  49. public void after(JoinPoint jp){
  50. System.out.println("方法最后执行.....");
  51. }
  52. //环绕通知,环绕增强,相当于MethodInterceptor
  53. @Around("webLog()")
  54. public Object arround(ProceedingJoinPoint pjp) {
  55. System.out.println("方法环绕start.....");
  56. try {
  57. Object o = pjp.proceed();
  58. System.out.println("方法环绕proceed,结果是 :" + o);
  59. return o;
  60. } catch (Throwable e) {
  61. e.printStackTrace();
  62. return null;
  63. }
  64. }
  65. }

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读

    相关 spring boot aop

    AOP一些理论和spring boot环境搭建免去,直接aop实现(LZ也是自己跟着官网学spring boot,原理概念性的东西,也是看官网和别人的分享,这里不敢说多了,会出