Spring之AOP | 青训营笔记

68 阅读1分钟

注:本人理解可能不够到位,代码内容也不完整,bean的实现是比较早期的方式,现在有注解的方式用来实现,不需要xml配置,本文的目的主要是为了自己记笔记。。。。

AOP

AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

这里通过一个简单的日志记录案例简要说明AOP的思想和实现方式。

案例

假设存在这样的一个场景,有用户登录、新增、更新和删除等操作,我们需要记录下每次操作的日志信息(用户名、ip地址、时间……),那么记录日志信息这个功能就是一个切面,我们可以把与这部分操作抽取出来并进行封装。

spring中实现该功能的核心是,通过环绕通知+切点表达式(找到要记录日志的方法),通过环绕通知的参数获取请求方法的参数(类、方法、注解、请求方式等),获取到这些参数之后,保存到数据库中。

spring中AOP部分的内容比较复杂,上述只是简单的一个小案例,AOP的思想对于降低模块耦合度和提高维护性方面有很大的帮助。