Spring Boot框架-使用AOP处理请求

spring、springMVC、springboot Spring框架生态解析(150字摘要) Spring是Java开发的核心框架,提供IoC容器和AOP等基础功能。其子模块SpringMVC专司Web层开发,处理HTTP请求响应。SpringBoot作为上层封装,通过自动配置和starter机制简化了Spring应用开发。三者呈递进关系:Spring是地基(基础容器),SpringMVC处理Web层(Servlet实现),SpringBoot则是开发加速器(内嵌容器+自动配置)。典型场景中,SpringBoot整合前两者,开发者仅需@SpringBootA 阅读详情

pom.xml中导入

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>

新建 Package:aspect 包内建类:HttpAspect
通过注释:Aspect和Component来建立拦截类

    @Aspect
    @Component
    public class HttpAspect {

        @Before("execution(public * com.imooc.Controller.GirlController.*(..))")//拦截GirlController类下所有的方法 ..代表任意参数
        public void log(){
            System.out.println("拦截到了!");
        }

执行顺序是先执行切面程序,再执行源程序 

将切面整理为

    @Aspect
    @Component
    public class HttpAspect {
        @Pointcut("execution(public * com.imooc.Controller.GirlController.girlList(..))")
        public void log(){}//定义一个共用方法,使用Pointcut注解
        @Before("log()")
        public void doBefore(){
        }
        @After("log()")
        public void doAfter(){
        }
    }

抛弃prienln(),我们使用log日志来记录运行信息

@Aspect
@Component
public class HttpAspect {

    private final static Logger logger
            = LoggerFactory.getLogger(HttpAspect.class);
    ···
    ···
    public void doAfter(){
        logger.info("22222");
    }
}

我们要通过Before来获取请求信息了

    public void doBefore(JoinPoint joinPoint){
        ServletRequestAttributes attrubutes =
                (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attrubutes.getRequest();
        //url
        logger.info("url={}",request.getRequestURI());
        //method
        logger.info("method={}",request.getMethod());
        //ip
        logger.info("ip={}",request.getRemoteAddr());
        //类方法
        logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()
        + "."+joinPoint.getSignature().getName());
        //参数
        logger.info("args={}",joinPoint.getArgs());
    }

那我们如何获取返回给端的信息呢

    @AfterReturning(returning = "object",pointcut = "log()")//用来返回信息
    public void doAfterReturning(Object object){
        logger.info("response={}",object.toString());
    }

我们要在模板类里添加一个toString()的方法,类似这样

    public String toString() {
        return "Gril{" +
                "id=" + id +
                ", cupSize='" + cupSize + '\'' +
                ", age=" + age +
                '}';
    }
才能返回object对象的数据


一篇文章搞懂spring aop,什么是AOP,什么是面向切面编程,动态代理实现AOP,Spring boot 实现Aop,spring 实现aop,附代码图文演示(保姆级教程) spring、aop、oop、java 阅读详情

相关推荐

Spring Boot中使用AOP统一处理Web请求日志

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处免费获取。[外链图片转存中…(img-yCfZm07Q-1713557569300)][外链图片转存中…(img-ZwKSzIpn-1713557569301)]由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处免费获取。

2301_79099480的博客 1265

Spring~Spring框架AOP的介绍, 实现统一异常处理、统一返回数据格式、统一会话管理(拦截器)

文章目录Spring AOP(面向切面编程)是什么?Spring实现AOP的方式JDK实现方式CGLIB的实现方式实现统一异常处理统一返回数据格式统一会话管理(拦截器) Spring AOP(面向切面编程)是什么? 面向切面编程(AOP)和面向对象编程(OOP)类似,也是一种编程模式。Spring AOP 是基于 AOP 编程模式的一个框架,它的使用有效减少了系统间的重复代码,达到了模块间的松耦合目的。 AOP 的全称是“Aspect Oriented Programming”,即面向切面编程,它将业务逻

Shangxingya的博客 1320

Spring boot 入门教程-AOP详细介绍及使用

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

2401_83330193的博客 1248

AOP拦截常用请求内容

1.拦截请求参数 @Component @Aspect public class Ascpect { private static final Logger log = LogManager.getLogger(Ascpect .class); @Pointcut("execution(* com.google.lvyou.controller.*

公瑾的博客 3231

spring Boot 日志管理--使用AOP统一处理Web请求日志

导语   AOP (Aspects Oriented Programming)面向切面编程,通过预编译的方式和运行期动态代理实现程序功能的统一维护。AOP作为Spring 框架中的一个重要的内容,通过对既有程序定义一个切点,然后再起前后切入不同的执行内容的方式来实现一些拓展性的操作。例如,打开/关闭数据库连接、打开/关闭事务、记录日志等等。   AOP不会破坏原有逻辑,所以它可以很好的对业务逻辑各个部件之间进行隔离,从而降低了各个部件之间的耦合度,这个在开发中是非常重要的,同时提高了程序的可重用性,同时提.

初学者 1261

Spring Boot使用AOP在控制台打印请求、响应信息

AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等。 AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。其与设计模式完成的任务差不多,是提供另一种角度来思考程序的结构,来...

Java碎碎念 969

Spring ,Spring MVC,Spring Boot

Spring ,SpringMVC,Spring Boot

weixin_51599093的博客 775

基于Python的高考志愿辅助填报系统

在实际应用中,系统需要处理更复杂的数据,包括更多的高校和专业信息、更详细的录取规则、以及用户的历史选择等。系统需要提供用户友好的界面,让考生输入自己的信息和偏好,然后通过后端的模型计算出推荐的志愿列表。此外,系统还应该提供一些个性化的服务,如根据考生的输入动态调整推荐策略、保存用户的填报历史和偏好等。特征可能包括考生的分数、所在省份、文理科类别、专业偏好、高校的地理位置、排名、专业的就业前景等。3. **推荐逻辑**:根据用户的分数和专业偏好,结合历史录取数据,使用简单的算法来推荐可能录取的高校和专业。

coder_wwwdy的博客 1977

校招准备(九):spring框架相关知识点

2.spring框架知识点 2.1spring模块,讲讲你理解的spring,为什么使用spring,常用注解: 深入理解Spring4框架 Spring由20多个模块组成,它们可以分为核心容器(Core Container)、数据访问/集成(Data Access/Integration)、Web、面向切面编程(AOP, Aspect Oriented Programming)、设备(...

七和 1421

LangFlow开源神器:拖拽构建AI Agent与MCP协议集成实战

LangFlow 15万星开源神器:拖拽搭建 AI Agent,一键部署 API / MCP / JSON 在AI应用开发领域,传统编码方式往往需要处理复杂的API调用、数据处理和流程编排,这让很多开发者望而却步。LangFlow作为GitHub上获得15万星的开源项目,通过可视化拖拽的方式彻底改变了AI Agent的开发体验。本文将完整介绍如何使用LangFlow快速构建功能强大的AI Agent,并实现API、MCP协议和JSON配置的一键部署。 1. LangFlow与AI Agent核心概念解析 1

weixin_33717117的博客 937

技术美术个人笔记(十三)——Houdini金属弯曲模拟

最近接收到使用Houdini自动解算破损/砸坏/扭曲汽车的需求,以此文记录制作金属弯曲自动解算工具时使用的部分节点解析;

小谁的博客 2148

SPRING:2022

SPRING/SPRINGMVC/SPRINGBOOT

m0_47130905的博客 336

HighTec安装使用

HighTec安装使用

qq_43552564的博客 3835

Spring框架之常用注解

在Spring中我们常用注解及作用 @Configuration 标识当前类是配置类 @ComponentScan 包扫描注解 扫描注解 @Bean 标识该方法的返回值交给Spring容器管理 @Scope 控制多例和单例 @Lazy 懒加载 @PostConstruct 初始化方法 @PreDestroy 销毁方法 @Component 将当前类未来的对象交给容器管理 @Autowired 按照类型进行注入 @Qualifier 按照名称进行注入 @Repository 标识持久层注解 @Service

weixin_55026035的博客 299

QGC4.0.11界面修改

QGC4.0.11。

超维空间科技的博客 2466

基于LSTM GRU RNN的交通流量预测-完整数据代码

基于LSTM GRU RNN的交通流量预测-完整数据代码

922

SpringBoot中监听器、过滤器、拦截器和AOP详解

本文详细介绍了监听器(Listener)、过滤器(Filter)、拦截器(Interceptor)和面向切面编程(AOP)是四种常用的机制

驴大毛的博客 1876

PX4从放弃到精通(十一):混控及PWM输出

文章目录前言一、混控脚本二、使用步骤1.引入库2.读入数据总结 前言 一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956 更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 分享知识,传递正能量,如有疏漏或不当之处,恳请指出. 一、混控脚本 混控脚本定义了不同 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pand

超维空间科技的博客 1万+

【Spring Boot】Spring AOP中的环绕通知

Aspect Oriented Programming(面向切面编程)AOP是Spring框架的第⼆⼤核⼼(第⼀⼤核⼼是IoC)AOP是一种思想,是对某一类事情的集中处理。其中在下面的学习中我们会学习到拦截器、统一异常处理,统一结果处理等,这些都是运用了AOP的统一思想来实现的。

smile_sundays的博客 7547

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 135

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring Boot + validation + AOP 请求参数校验

Spring Boot + validation + AOP 请求参数校验 一、validation 校验注解 通用 @Null 被注释的属性必须为 null @NotNull被注释的属性必须不为 null @AssertTrue 被注释的属性必须为 true @AssertFalse 被注释的属性必须为 false 字符串/数组/集合检查:(字符串本身就是个数组) @Pattern(reg...

浓密秀发之谦先生的博客 1788

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

spring boot 使用AOP处理请求

使用AOP,我们可以很方便地统一处理请求日志步骤1、首先我们得在pom.xml文件中引入aop的依赖&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-aop&lt;/artifactId&gt; &lt;/d...

qq_15452971的博客 446

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring boot中使用aop详解

aop是spring的两大功能模块之一,功能非常强大,为解耦提供了非常优秀的解决方案。 现在就以springboot中aop的使用来了解一下aop。 一:使用aop来完成全局请求日志处理 创建一个springboot的web项目,勾选aop,pom如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt

tianyaleixiaowu的专栏 2万+

Spring Boot(十一)使用AOP,@Aspect统一处理Web请求日志

项目GitHub地址 : https://github.com/FrameReserve/TrainingBoot Spring Boot(十一)使用AOP,@Aspect统一处理Web请求日志,标记地址: https://github.com/FrameReserve/TrainingBoot/releases/tag/0.0.11 增加Web层日志切面类:

a286352250的博客 1万+
上一篇: Spring Boot框架-使用 @Transactional 进行事务管理
下一篇: Spring Boot框架-使用自建 Exception 实现异常处理
joen.chen
博客等级 码龄10年 76粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值