Spring提供了一个AOP框架,让我把切面插入到方法执行的周围。
1、概念
定义通用功能,通过申明定义这些功能要以何种方式在何处应用,而不需要修改受影响的类。这些通用功能可以模块化为特殊的类,即切面。
连接点:连接点是一个应用执行过程中能够插入一个切面的点(Spring只支持方法级别的连接点)
切点:定义匹配通知织入的一个或多个连接点(在哪做)
通知:切面的工作(做什么)
切面:由切点和通知的结合
织入:把切面应用到目标对象并创建新的代理对象的过程
通知分类
前置通知:在目标方法调用之前执行
后置通知:在目标方法执行之后执行,不管是正常执行还是抛了异常
返回通知:在目标方法执行成功后执行,不管方法是否有返回值
异常通知:在目标方法抛出异常后调用
环绕通知:通知方法将目标方法封装起来,可以达到前几种通知的效果
2、Spring切面编程分为:基于注解和基于XML配置形式
基于注解形式
首先开启Aspect代理功能
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>