SpringBoot——AOP处理请求日志

  这一篇文章咱们继续延续上一篇的博客《SpringBoot——问题讲解》之后的的续篇,咱们这篇文章主要的内容就是讲解AOP处理请求日志。

【AOP】

  AOP(Aspect Oriented Programming)面向切面编程,是一种编程的范式,与语言无关是一种程序设计思想,OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容。这种思想也同样的适用于:动态代理

【优点】

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

【垂直处理和水平处理】

我们以记录每个Http请求为例:

垂直处理:


AOP进行水平处理:利用AOP进行方法拦截,红色的箭


  从图中看出,AOP对我们的业务的纵向走势不会造成阻碍作用,所以所面向切面编程是对面向对象编程的一种补充。上图是简单的一个AOP横向逻辑切入业务逻辑纵向逻辑的一个直挂展示,有些人会问?为什么要这样做?我们有那么多的横切行的必要吗?现在我们看看使用AOP可以帮助我们避免那些问题?


  aop解决了大量的代码重复。

  我需要做一个日志的功能,即需要在每条线上都进行日志的处理,我们是不是要这么写?


这样有很多条线中都包含了一段相同的代码,你怎么看?抽出来呗,作为公共的部分,被调用。


这样每个方法都和这个公共的功能类有关联关系,这里只是我们的抽出公共代码,解决了代码重复。我们需要做的是“解耦”,将业务类和这个公共的功能类之间的耦合解开。

【实现AOP】

一、代码优化前

maven的pom中添加引用

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


以其中的girlList()方法为例子:


显示结果:


这就是AOP面向切面编程的实现,但是我们发现一个问题,下图所示的代码出现了重复,这就是一种很不好的编程,显着特别的low,所有我们要对其进行优化



二、代码优化后:

注意:红色的框框是System.out.println用spring自带的SLF4J实现,蓝色的是抽出公共的部分


显示结果:


【结尾】

小伙伴们是不是发现用了AOP之后程序变得简单了好多,省略很多重复的代码呢?

下一篇文章我要进行统一异常的处理,欢迎继续关注哦!!!

猜你喜欢

转载自blog.csdn.net/tengliu6/article/details/80207319