什么是AOP
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
通俗点讲就是提供一个为一个业务实现提供切面注入的机制,通过这种方式,在业务运行中将定义好的切面通过切入点绑定到业务中,以实现将一些特殊的逻辑绑定到此业务中。
举个栗子,项目中有记录操作日志的需求、或者流程变更是记录变更履历,无非就是插表操作,很简单的一个save操作,都是一些记录日志或者其他辅助性的代码。一遍又一遍的重写和调用。不仅浪费了时间,又将项目变得更加的冗余,实在得不偿失。
所以就需要面向切面aop就出场了
AOP 相关名词
要理解SpringBoot整合aop的实现,就必须先对面向切面实现的一些aop的名称有所了解
-
切面(Aspect)
:一个关注点的模块化。以注解@Aspect的形式放在类上方,声明一个切面。 -
连接点(Joinpoint)
:在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候都可以是连接点。 -
通知(Advice)
:通知增强,需要完成的工作叫做通知,就是你写的业务逻辑中需要比如事务、日志等先定义好,然后需要的地方再去用。主要包括5个注解:Before,After,AfterReturning,AfterThrowing,Around。
@Before
:在切点方法之前执行。@After
:在切点方法之后执行@AfterReturning
:切点方法返回后执行@AfterThrowing
:切点方法抛异常执行@Around
:属于环绕增强,能控制切点执行前,执行后,用这个注解后,程序抛异常,会影响@AfterThrowing这个注解
-
切点(Pointcut)
:其实就是筛选出的连接点,匹配连接点的断言,一个类中的所有方法都是连接点,但又不全需要,会筛选出某些作为连接点做为切点。如果说通知定义了切面的动作或者执行时机的话,切点则定义了执行的地点。切入点表达式如何和连接点匹配是AOP的核心:Spring缺省使用AspectJ切入点语法。 -
引入(Introduction)
:在不改变一