一。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. 【转】 spring context解惑

    转自:http://blog.csdn.net/c289054531/article/details/9196149?utm_source=tuicool&utm_medium=referra ...

  2. SDUT OJ 数据结构实验之串三:KMP应用

    数据结构实验之串三:KMP应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  3. socket长连接 GCDAsyncSocket

    基础: http://www.2cto.com/kf/201609/546974.html 转自: http://blog.csdn.net/u013282507/article/details/52 ...

  4. ansible基本模块-cron

    ansible   XXX   -m   cron   -a   "name=‘XXX ’   job=‘执行的命令’   minute=XXX "                ...

  5. python学习之路---day19--面向对象--约束

    约束和异常一:约束: 约束方法:(解释:就相当于在想项目中,先提前规划好框架和约定基本代码,像定义好调用的名字后,后面的名字只能用这个,用其他的 名字就会抛出异常.错误) 1:提取父类,然后再父类中定 ...

  6. Kibana6.x.x源码分析--ngReact使用

    ngReact  GitHub地址:https://github.com/ngReact/ngReact

  7. Loj 6432. 「PKUSC2018」真实排名 (组合数)

    题面 Loj 题解 枚举每一个点 分两种情况 翻倍or不翻倍 \(1.\)如果这个点\(i\)翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: \(a[i] \leq a[x] < ...

  8. 洛谷 P2495 [SDOI2011]消耗战(虚树,dp)

    题面 洛谷 题解 虚树+dp 关于虚树 了解一下 具体实现 inline void insert(int x) { if (top == 1) {s[++top] = x; return ;} int ...

  9. 洛谷 P1800 software_NOI导刊2010提高(06)

    题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后 ...

  10. codeforces 1072D Minimum path bfs+剪枝 好题

    题目传送门 题目大意: 给出一幅n*n的字符,从1,1位置走到n,n,会得到一个字符串,你有k次机会改变某一个字符(变成a),求字典序最小的路径. 题解: (先吐槽一句,cf 标签是dfs题????) ...