切面是包含了:通知、切点和切面的类,相当于 AOP 实现的某个功能的集合。
应用执行过程中能够插入切面的一个点,这个点可以是方法调用时,抛出异常时,甚至修改字段时。切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。
连接点相当于需要被增强的某个 AOP 功能的所有方法。
切点相当于保存了众多连接点的一个集合(如果把切点看成一个表,而连接点就是表中一条一条的
数据)。切点相当于要增强的方法
切面也是有目标的 ——它必须完成的工作。在 AOP 术语中,切面的工作被称之为通知。(定义了切面是什么,何时使用,其描述了切面要完成的工作,还解决何时执行这个工作的问题。)
Spring 切面类中,可以在方法上使用以下注解,会设置方法为通知方法,在满足条件后会通知本方法进行调用:
前置通知使用 @Before:通知方法会在目标方法调用之前执行。
后置通知使用 @After:通知方法会在目标方法返回或者抛出异常后调用。
返回之后通知使用 @AfterReturning:通知方法会在目标方法返回后调用。
抛异常后通知使用 @AfterThrowing:通知方法会在目标方法抛出异常后调用。
环绕通知使用 @Around:通知包裹了被通知的方法,在被通知的方法通知之前和调用之后执行自
定义的行为。