首页 > 编程语言 > 详细

springboot 实现 aop

时间:2019-06-25 11:43:00      阅读:83      评论:0      收藏:0      [点我收藏+]
  1. pom.xml 导入 springboot aop 依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  1. 创建 aspect,在 execution 参数中写上被切的类
@Aspect
@Component
public class IndexAspect {
    private static final Logger logger = LoggerFactory.getLogger(IndexAspect.class);

    // 公用的切点,该类下所有方法
    @Pointcut("execution(public * com.example.IndexController.*(..))")
    public void log() {
        logger.info("调用 log() ");
    }

    // 使用log函数定义的 execution,不执行log()方法
    @Before("log()")
    public void doBefore(JoinPoint joinPoint) {
        logger.info("调用 doBefore");
        ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        logger.info("获取 request");
        HttpServletRequest request = attributes.getRequest();
        logger.info("获取 reponse");
        attributes.getResponse();
        logger.info("获取 session");
        attributes.getRequest().getSession();
        logger.info("获取 class:" + joinPoint.getSignature().getDeclaringTypeName().toString());
        logger.info("获取 args:" + joinPoint.getArgs());
    }

    // 获取返回值
    @AfterReturning(pointcut = "log()", returning = "object")
    public void doAfterReturning(Object object) {
        logger.info("获取返回值" + object.toString());
    }
}
  1. 启动项目,查看控制台日志
com.example.IndexAspect: 调用 doBefore
com.example.IndexAspect: 获取 request
com.example.IndexAspect: 获取 reponse
com.example.IndexAspect: 获取 session
com.example.IndexAspect: 获取 class:com.example.thymeleaf.IndexController
com.example.IndexAspect: 获取 args:
com.example.IndexAspect: index

参考:http://www.fengyunxiao.cn

springboot 实现 aop

原文:https://www.cnblogs.com/jpfss/p/11081485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!