SpringBoot+Gradle实现AOP
来源:互联网 发布:特朗普执政知乎 编辑:程序博客网 时间:2024/06/06 17:34
1.搭建SpringBoot+Gradle项目,可参考:《SpringBoot+Gradle运行简单Demo Eclipse》
2.在gradle.build中添加jar包引用:
compile 'org.springframework.boot:spring-boot-starter-aop'
3.创建AspectLog.java类(类名可自定义):
package com.david.translate.aspect;import javax.servlet.http.HttpServletRequest;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;@Aspect@Componentpublic class AspectLog { Logger log = LoggerFactory.getLogger(AspectLog.class); /** * http访问方法之前 切入 * 1.com.david.translate.controller.*.* * 这个路径 是一直要指定到你的方法层级。 * 如:com.david.translate.controller.UserController。java * 需要配置的execution就是 com.david.translate.controller.*.*(..) * 第一个*指的是controller 下的所有类 * 第二个*指的是类里面的所有方法 * 2.如果这块指定的目录没有到方法,则会跑出异常。 * @param join */ @Before("execution(public * com.david.translate.controller.*.*(..))") public void beforLog(JoinPoint join){ ServletRequestAttributes attriButes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attriButes.getRequest(); //打印url log.info("url:{}", request.getRequestURL()); //打印请求方式 log.info("requet_method:{}", request.getMethod()); //打印类方法 log.info("class_method:{}", join.getStaticPart().getSignature().getDeclaringTypeName() + "." + join.getSignature().getName()); //打印参数 log.info("parameter:{}", join.getArgs()); //打印Ip log.info("ip:{}", request.getLocalAddr()); } /** * http访问方法之后切入 */ @After("execution(public * com.david.translate.controller.*.*(..))") public void afterLog(){ log.info("http request after info!"); } /** * 打印返回的数据 * 1.returning 的值 和 resultLog中的入参一致 * 2.pointcut 配置的是需要切入的配置 * @param obj */ @AfterReturning(returning="obj", pointcut="execution(public * com.david.translate.controller.*.*(..))") public void resultLog(Object obj){ log.info("return:{}", obj.toString()); }}
3.编译并运行Spring Boot,并访问controller方法,打印日志如下:
阅读全文
0 0
- SpringBoot+Gradle实现AOP
- springboot CGLib 方式实现AOP代理问题
- Spring AOP基于SpringBoot的实现
- springboot 使用CGLib 方式实现AOP代理
- SpringBoot基于AOP实现自定义注解
- springboot 自定义注解+AOP 实现日志记录
- springboot AOP+日志的注解实现
- gradle+springBoot
- springboot-AOP
- SpringBoot-AOP
- springBoot aop
- springboot+gradle集成redis实现动态存储值
- springboot + mybatis + 多数据源 (AOP实现)
- Springboot+Mybatis+Maven+Oracle+Cassandra+事务(Aop)+定时任务实现
- SpringBoot中利用AOP实现拦截器效果
- SpringBoot集成Redis实现缓存处理(Spring AOP技术)
- gradle+springBoot入门示例
- gradle+maven+springboot实战
- hibernate使用报错
- 测试常用Linux命令
- springmvc-Ajax-Objec返回值为Object
- 很多时候df查看磁盘容量为什么比du统计所有目录大小高
- C#中转换JS的Escape()和Unescape()
- SpringBoot+Gradle实现AOP
- 一次 string的 GC 探寻
- 细数:数据中心机房对环境的严格要求有哪些?
- javascript基础
- 优秀的用户体验设计从讲好一个故事开始
- vue 资料合集
- Python+selenium运行出错'Application' executable may have wrong permissions.'chromedriver' executable nee
- 数据仓库系统的运维优化
- Maven创建父子工程