SpringBoot ------ 使用AOP处理请求

一。AOP统一处理请求日志

  1.spring的两大核心:AOP ,  IOC

  

  

  2.面向对象OOP关注的是将需求功能垂直,划分为不同的,并且相对独立的,

     会封装成良好的类,并且类有属于自己的行为。

  3.AOP则利用的是一种横切的技术,将面向对象构建的强大的类的体系,进行水平的切割;

    并且将那些会影响到多个类的公共行为封装成一个可重用的模块。这个模块称为切面。

  4.AOP的关键思想就是:将通用逻辑从业务逻辑中分离出来。

  5.结合处理请求打印日志这两种需求来观察这两种思想怎么从垂直和水平来划分的。

  5.1 一个网络请求的简单的生命周期

    

  5.2 操作数据库也有一个操作数据库的生命周期

    

  

二。如何在spring中集成aop,以统一处理请求日志

  1.记录每一个Http请求实例

    1.1.做个授权访问的功能

      A.传统做法:

        在每个方法开始进行判断,如果登录了,才可以继续执行;

      B.在controller中加个构造方法,在构造方法中进行判断;

        但是不行,spring容器启动的时候,就把这些类实例化了,当一次http请求来的时候不会再

        执行此构造方法;

      C.AOP写一个统一的处理

        C1:使用AOP的第一步--添加依赖

          

        C2:往常需要再启动类上加个注解,但是AOP不需要。

        C3:建立处理文件:

          建立一个aspect包--在包下建立一个文件(HttpAspect.java)-- 类上加@Aspect注解

          --再加注解@Component(将文件引入到spring 容器中)-- 在类中写相应的逻辑代码;

          

          

    1.2.功能需求:希望在htttp请求到controller类的方法中之前,就记录下来;

    

    1.3.验证:加了@Before是否在方法执行直接就执行了

      在方法中输出,看哪个先输出。

      

原文地址:https://www.cnblogs.com/ccEmma/p/8686353.html

时间: 2024-08-25 16:08:12

SpringBoot ------ 使用AOP处理请求的相关文章

SpringBoot使用AOP记录请求日志和异常日志

本文基础WEB环境使用SpringBoot及Spring-Data-Jpa构建 关于SpringBoot及JPA用法本文不再过多讨论,下面是引入的jar: 起步依赖 web及aop依赖 jpa依赖 mysql驱动 本文着重AOP的使用,你也可以使用自己构建的环境 由于本文中使用的JPA,因此首先创建保存日志及保存异常的实体类,如果你使用的是Mybatis,则需要首先创建表然后根据表来逆向生成实体类 保存日志的实体类: 日志实体 保存异常的实体类: 异常实体 接下来我们定义一个Operation注

SpringBoot使用AOP获取请求参数

package com.*.aop; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.Signature; impo

Spring全家桶——SpringBoot之AOP详解

Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方面. 准备工作 首先,使用AOP要在build.gradle中加入依赖 //引入AOP依赖 compile "org.springframework.boot:spring-boot-starter-aop:${springBootVersion}" 然后在application.yml中

SpringBoot多跨域请求的支持(JSONP)

在我们做项目的过程中,有可能会遇到跨域请求,所以需要我们自己组装支持跨域请求的JSONP数据,而在4.1版本以后的SpringMVC中,为我们提供了一个AbstractJsonpResponseBodyAdvice的类用来支持jsonp的数据(SpringBoot接收解析web请求是依赖于SpringMVC实现的).下面我们就看一下怎么用AbstractJsonpResponseBodyAdvice来支持跨域请求. 使用AbstractJsonpResponseBodyAdvice来支持跨域请求

SpringBoot解决跨域请求拦截

前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口. 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策. 比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截. 注意两点: 1.必须是脚本请求,比如AJAX请求. 但是如下情况不会产生跨域拦截 <img src="xxx"/> <a href='xxx"> </a&

springboot添加AOP日志配置

目录 1,在pom.xml配置文件中添加以下配置 2,自定义配置文件logback.xml,该配置文件位置在templates文件夹下第一层,和html文件夹位置并列. 3,logback.xml文件配置内容 4,写一个LogUtil类 @(springboot添加aop) 1,在pom.xml配置文件中添加以下配置 <!--spring aop 包--> <dependency> <groupId>org.springframework.boot</groupI

SpringBoot使用AOP统一处理Web请求日志

<!--aop依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> @Aspect @Component public class WebLogAspect { private static final Logger logge

springBoot使用aop添加处理rest请求 打印请求时间 和请求参数

贴上aop配置 import com.alibaba.fastjson.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annot

Springboot中AOP统一处理请求日志

完善上面的代码: 现在把输出信息由先前的system.out.println()方式改为由日志输出(日志输出的信息更全面)