一。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是否在方法执行直接就执行了

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

      

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

  1. (办公)springboot配置aop处理请求.

    最近项目用到springboot,就是需要配置一些东西.比如用aop处理请求.方法前通知获取url,method,ip,类方法,参数,方法后通知,返回参数,而且还可以记录一下日志.下面是操作的代码. ...

  2. SpringBoot使用AOP获取请求参数

    最近试了下拦截controller方法查看请求参数,方式如下: package com.*.aop; import com.alibaba.fastjson.JSON; import com.alib ...

  3. SpringBoot学习笔记(七):SpringBoot使用AOP统一处理请求日志、SpringBoot定时任务@Scheduled、SpringBoot异步调用Async、自定义参数

    SpringBoot使用AOP统一处理请求日志 这里就提到了我们Spring当中的AOP,也就是面向切面编程,今天我们使用AOP去对我们的所有请求进行一个统一处理.首先在pom.xml中引入我们需要的 ...

  4. SpringBoot AOP处理请求日志处理打印

    SpringBoot AOP处理请求日志处理打印 @Slf4j @Aspect @Configuration public class RequestAopConfig { @Autowired pr ...

  5. spring-boot 使用Aop通知打印控制器请求报文和返回报文

    一.简介 开发过程中我们往往需要写许多例如: @GetMapping("/id/get") public Result getById( String id) throws Exc ...

  6. Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用

    ==============Springboot的日志管理============= springboot无需引入日志的包,springboot默认已经依赖了slf4j.logback.log4j等日 ...

  7. Spring Boot中使用AOP记录请求日志

    这周看别人写的springboot后端代码中有使用AOP记录请求日志,以前没接触过,因此学习下. 一.AOP简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编 ...

  8. SpringBoot切面Aop的demo简单讲解

    前言 本篇文章主要介绍的是SpringBoot切面Aop的demo简单讲解. SpringBoot Aop 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 切面(Aop) 一.概 ...

  9. Spring全家桶——SpringBoot之AOP详解

    Spring全家桶--SpringBoot之AOP详解 面向方面编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象编程(OOP). OOP中模块化的关键单元是类,而在AOP中,模块化单元是方 ...

随机推荐

  1. Python——零基础向-四行代码下载网页上的一张图片

    一.确保安装了requests模块 还没安装的可以百度一下如何安装,很简单的. 这里简单的说一下方法:win+R,输入cmd,打开命令行窗口,输入命令:pip install requests ,即可 ...

  2. HTML5 indexedDb 数据库

    indexedDb 数据库   上一节中,我们知道了,HMTL5中内置了两种本地数据库,一种是通过SQL语言来访问的文件型SQL数据库被称为“SQLLite,另一种是是被称为indexedDB 的数据 ...

  3. redis incr自增指定的无限期 key 删除问题

    不得不说,最近在使用redis的incr的功能的时候,着实是踩了不少的坑啊! 前面我写的一篇文章里面,我提到通过incr产生的键在用普通的get的方式去获取的时候,是获取不到的,所以我不得不通过特殊的 ...

  4. jquery 中 $('div','li')是什么意思?

     Javascript 专业回答   2013-07-18 10:59 这个写法没有错误,而且那个人跟你说的也没错,是选择li里面所有div 前面几位都学艺不精,都说错了 要搞清楚$('div','l ...

  5. angularJs路由的使用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Ubuntu Server 中实际内存与物理内存不相等的问题

    记录 来源 v2ex,提到了一个平时不是很起眼的问题,Ubuntu Server 中系统默认会占用 128M 内存,用于 CVM 内部的 kdump 服务. 科普 查看 CVM 所拥有的物理内存 通过 ...

  7. python用字典实现switch..case类似的函数调用

    python中没有swich..case,若要实现一样的功能,又不想用if..elif来实现,可以充分利用字典进行实现 主要是想要通过不同的key调用不同的方法,在学习过程中,发现不管输入的key是什 ...

  8. HihoCoder - 1142 三分法练手

    中文题面,原函数为三峰函数,先折半再三分 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+11; con ...

  9. http简单请求 -- 复杂请求

  10. Android 自动分析apk加固方式

    本实例只对apk中lib文件夹中的文件进行分析import java.io.File;import java.io.IOException;import java.util.ArrayList;imp ...