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是否在方法执行直接就执行了
在方法中输出,看哪个先输出。