Spring Aop 编程
面向方面变成(AOP):
规定一个切面(哪个方法)/切入点(方法里的哪个位置)
前置/后置/异常/最终/环绕通知(Advice)
将类变成通知的方法:实现接口
前置通知:
1.jar包导入(AspectJ)
2.配置
3.编写代码 每当执行add()方法(业务方法),自动执行log()方法(Aop方法)
NoClassFoundError:表示缺少jar包

后置通知:
1.通知类:普通类实现接口
2.业务类 studentServiceImpl中的addStudent()
3.配置:
将业务类、通知纳入SpringIoc容器中
定义切入点(一端)、定义通知类(另一端),通过pointcut-ref将两端连接起来
环绕通知
在目标方法的前后,异常发生时,最终等各个地方都可以进行的通知,最强大的一个通知;可以获取目标方法的全部控制权(目标方法是否执行、执行之前、执行之后、参数、返回值等)
在使用环绕通知时,目标方法的一切信息 都可以通过invocation参数获取到
环绕通知 底层是通过拦截器实现的。
使用注解实现通知
1.jar包导入(AspectJ)
2.配置:将业务类、通知纳入Spring IOC容器中
开启注解对Aop的支持aop:aspectj-autoproxy
业务类addStudent-通知
3.编写代码
注意:通过注解形式将对象增加到IOC容器时,需要设置扫描器
<context:component-scan base-package="org.nufe.aop">
扫描器会将指定的包中@Component @Service @Respository @Controller修饰的类产生的对象增加到IOC容器中
通过配置将类变成一个通知
基于Schema配置
类似于实现接口的方式
接口实现的方式:public class logAround implements MethodInterceptor
Schema方式实现通知:1.编写一个普通的类 public class logAfter{}
2.将该类通过配置,转为一个“通知”
如果要获取一个目标对象的信息:
注解、Schema: JoinPoint
接口:Method method, Object[] args,Object target
Schema形式和注解形式很像,不同之处:
注解使用了@After等注解 Schema使用了多余的配置