springboot中使用aop技术
2019-08-26 06:17:21来源:博客园 阅读 ()
springboot中使用aop技术
aop是面向切面编程的意思,它可以需要先选择一些切入点,然后对这些切入点进行拦截,注入统一的代码逻辑,这也是解耦的一种方式,也是为了避免重复的代码,让开发人员把关注点放在业务上。
引用包
'org.springframework.boot:spring-boot-starter-aop'
添加切入点
/**
* 基于com.lind.basic.controller包下的方法进行拦截.
*/
@Aspect
@Component
public class AopPrintConstController {
private static final Logger logger = LoggerFactory.getLogger(AopPrintConstController.class);
/**
* 横切点,哪些方法需要被横切.
*/
@Pointcut(value = "execution(public * com.lind.basic.controller..*.*(..))")
public void cutOffPoint() {
}
/**
* @param joinPoint 具体的方法之前执行.
*/
@Before("cutOffPoint()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
logger.info("cutOffPoint.before...");
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
String requestURI = request.getRequestURI();
String remoteAddr = request.getRemoteAddr(); //这个方法取客户端ip"不够好"
String requestMethod = request.getMethod();
String declaringTypeName = joinPoint.getSignature().getDeclaringTypeName();
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
logger.info("请求url=" + requestURI + ",客户端ip=" + remoteAddr + ",请求方式=" + requestMethod + ",请求的类名=" + declaringTypeName + ",方法名=" + methodName + ",入参=" + args);
}
/**
* 解用于获取方法的返回值.
*
* @param obj 返回值
*/
@AfterReturning(returning = "obj", pointcut = "cutOffPoint()")
public void doBefore(Object obj) throws Throwable {
logger.info("RESPONSE : " + obj);
}
}
测试
当我们访问controller下的接口下,在控制台中将输出方法执行前和执行后的结果
com.lind.basic.AopPrintConstController : 请求url=/hello/1,客户端ip=0:0:0:0:0:0:0:1,请求方式=GET,请求的类名=...
com.lind.basic.controller.H com.lind.basic.AopPrintConstController : RESPONSE : <200 OK,com.lind.basic.entity.Token@249f92d9,{}>
感想
事实上,springboot真的是一个强大的脚手架,它帮助我们把很多依赖都结合了,像今天说的aop,事实上springboot帮我们把以下包都结合在一起了,让开发人员引用时更方便。
springboot-aop集成了
- spring-aop,
- aspectjrt,
- spectjweaver
原文链接:https://www.cnblogs.com/lori/p/11389537.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash