SpringBoot-AOP切面处理
2019独角兽企业重金招聘Python工程师标准>>>
应用Spring的过程中,最大最核心的必须要数AOP啦,比如,向同一水平面上的相同业务操作,我们就可以使用AOP来完成,快速方便,简单安全;如拦截,验证,或者SpringMVC中的事物AOP配置等等..,
1: 首先引入jar包
<dependency><!-- AOP面向切面 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2: 编写切面类
package com.gy.demo.common.aspect;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;/*** Description: HTTP请求拦截* 面向切面: AOP* 注解: @Component : 将类注入到Spring容器中;* 注解: @Aspect : 声明AOP处理* 注解: @Pointcut : 声明拦截地址* 注解: @Before : 在Value中的方法 之前 都进行拦截* 注解: @After : 在Value中的方法 之后 都进行拦截* 注解: @AfterReturning : 在Value中的方法 之后 都进行拦截,并获取返回的数据* @author geYang* @since 2017/12/28**/
@Aspect
@Component
public class HttpAspect {private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);@Pointcut("execution(public * com.gy.demo.controller.*.*.*(..))")public void logger(){}@Before("logger()")public void doBefore(JoinPoint joinPoint){ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = servletRequestAttributes.getRequest();//iplogger.info("user_ip={}",request.getRemoteAddr());//urllogger.info("request_url={}",request.getRequestURL());//methodlogger.info("request_method={}",request.getMethod());//类方法logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());//参数logger.info("request_param={}",joinPoint.getArgs());}@After("logger()")public void doAfter(){logger.info("出来了");}@AfterReturning(returning = "object",pointcut = "logger()")public void doAfterReturning(Object object){logger.info("response={}",object==null?null:object.toString());}}
启动项目,访问Controller就会看到拦截信息;
参考: https://www.imooc.com/video/14341
项目源码: https://gitee.com/ge.yang/SpringBoot
转载于:https://my.oschina.net/u/3681868/blog/1595947
SpringBoot-AOP切面处理相关推荐
- Springboot AOP切面
文章目录 SpringBoot Aop 切面(Aop) 一.什么是切面 二.切面的用途 三.AOP切面常用注解 四.详细内容 1.切面(Aspect) 2.连接点(Joinpoint) 3.通知(Ad ...
- springBoot AOP切面编程
AOP 为 Aspect Oriented Programming 的缩写,意为 面向切面编程.AOP 为spring 中的一个重要内容,它是通过对既有程序定义一个切入点,然后在其前后切入不同的执行内 ...
- Spring AOP切面使用详细解析
相关文章: SpringBoot AOP切面的使用 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析) 架构师系列内容:架构师学习笔记(持续更新)) Spring AOP 应 ...
- aop springboot 传入参数_java相关:springboot配置aop切面日志打印过程解析
java相关:springboot配置aop切面日志打印过程解析 发布于 2020-3-31| 复制链接 摘记: 这篇文章主要介绍了springboot配置aop切面日志打印过程解析,文中通过示例代码 ...
- SpringBoot:切面AOP实现权限校验:实例演示与注解全解
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 目录 理解AOP 什么是AOP AOP体系与概念 AOP实例 第一个实例 ...
- java 切面 不执行,解决springboot的aop切面不起作用问题(失效的排查)
检查下springboot的启动类是否开启扫描 @springbootapplication @componentscan(basepackages = {"com.zhangpu.spri ...
- springboot+aop+自定义注解,打造通用的全局异常处理和参数校验切面(通用版)
springboot+aop+自定义注解,打造通用的全局异常处理和参数校验切面(通用版) 参考文章: (1)springboot+aop+自定义注解,打造通用的全局异常处理和参数校验切面(通用版) ( ...
- SpringBoot之AOP切面的使用
相关文章: Spring AOP切面使用详细解析 SpringBoot之Listener注册到Spring容器中的多种方法 SpringBoot之Interceptor拦截器注入使用 SpringBo ...
- springboot之aop切面获取请求
springboot之aop切面获取请求 项目场景: 在学习springboot的博客开发中,通过aop切面,对博客中的操作进行记录 问题描述: 问题: 在切面方法中,无法获取请求的参数和类名,方法, ...
- Springboot整合多数据源(自定义注解+aop切面实现)
原理: 通过后台配置多个数据源,自定义注解,通过aop配置注解切面,前端调用需要传递数据源参数,根据判断数据源参数,调用相应的service或mapper方法. 实现: 准备俩个数据库:俩张表 表sq ...
最新文章
- Android ViewPager使用具体解释
- 【ES6】JS的Set和Map数据结构
- sharding jdbc sql路由日志
- Makefile文件的使用
- format 转化时间格式不起作用
- faked 一个用于 mock 后端 API 的轻量工具
- Mysql中遇到的错误
- Spring Boot Actuator监控关闭
- 85后转行java,一名85后阿里老程序员的真心话
- getgrgid()函数
- 程序结构程序设计(三) ——递归及递归举例
- 奇异值分解(SVD)和最小二乘解在解齐次线性超定方程中的应用
- diffpatch升级_Tinker资源补丁原理解析
- 深度强化学习从入门到大师_深度学习大师的经验教训
- ORL人脸识别tensorflow实现
- halcon 缺陷检测 药片检测(有无)
- 蒲公英内侧:项目打包成ipa文件,创建证书和描述文件流程
- js网页3D雪花特效插件(导入直接使用,参数齐全)
- 为什么你在公司说话没分量,得不到别人的重视?
- 剑网3:指尖江湖电脑版,如何用模拟器玩
热门文章
- 【Android】资源加载过程
- Android 创建新Project时报错 Cannot create linked resource
- iOS self 和 super 学习
- (五)Docker查看容器ip及指定固定IP
- 如何实现不安装xpoedinstall激活xposed模块
- 基于react开发package.json的配置
- Quartz执行周期配置
- portal for arcgis 10.4的安装和配置及遇到的问题
- 第二十八章 springboot + zipkin(brave定制-AsyncHttpClient)
- tcp3次握手,https加密,ca认证