目录
面向切面编程AOP
AOP(Aspect Orient Programming),面向切面编程。
切面:公共的,通用的,重复的功能称为切面,面向切面编程就是将切面提取出来,单独开发,在需要调用的方法中通过动态代理的方式进行织入。
手写AOP框架
业务:图书购买业务
切面:事务
先进行新建项目 修改目录 pom.xml文件修改
1)第一个版本:业务和切面紧耦合在一起,没有拆分。(proxy 1)
2)第二个版本:使用子类代理的方式拆分业务和切面。
3)第三个版本:使用静态代理拆分业务和切面.业务和业务接口已拆分.此时切面紧耦合在业务中。
(第四个版本测试)
4)第四个版本:使用静态代理拆分业务和业务接口,切面和切面接口。
5)第五个版本:使用动态代理完成第四个版本的优化。
Spring支持的AOP的实现
Spring支持AOP的编程,常用的有以下几种:
1)Before通知:
在目标方法被调用前调用,涉及接口org.springframework.aop.MethodBeforeAdvice;
2)After通知:
在目标方法被调用后调用,涉及接口为org.springframework.aop.AfterReturningAdvice;
3)Throws通知:
目标方法抛出异常时调用,涉及接口org.springframework.aop.ThrowsAdvice;
4)Around通知:
拦截对目标对象方法调用,涉及接口为org.aopalliance.intercept.MethodInterceptor。
AOP常用的术语
1)切面:就是那些重复的,公共的,通用的功能称为切面,例如:日志,事务,权限。
2)连接点:就是目标方法.因为在目标方法中要实现目标方法的功能和切面功能。
3)切入点(Pointcut):指定切入的位置,多个连接点构成切入点.切入点可以是一个目标方法,可以是一个类中的所有方法,可以是某个包下的所有类中的方法。
4)目标对象:操作谁,谁就是目标对象。
5)通知(Advice):来指定切入的时机.是在目标方法执行前还是执行后还是出错时,还是环绕目标方法切入切面功能。