Spring之AOP面向切片
一、理论基础:
AOP(Aspectoriented programming)面向切片/服务的编程,在Spring中使用最多的是对事物的处理。而AOP这种思想在程序中很多地方可以使用的,比如说,对某些规则的验证,可以抽象封装到一个模块中,并在该模块中定义一定的使用规则,然后植入到原有的程序中,其实这就是面向切片。这个模块叫做Aspect,定义的规则是pointcut,具体的验证的实现是advice,植入的目标叫TargetObject,切入到目标中的方法叫做joinpint,植入的过程叫weave。

Advice在模块中关注点的具体位置有:前、后或者抛出 Before、After、Throw 三种:
Before Advice
代用之前的处理
After Advice
调用之后的处理
Throw Advice
调用的时候抛出的异常处理
二、实践:
有了理论基础后,重点还是在程序中使用。下面的实例使用注解和配置两种方式,实现对添加用户的方法的验证服务的切入。
1、Anotation注解的方式:
1.首先定义业务逻辑接口UserManager类的方法:
public class Client {public static void main(String[] args) {SecurityHandler hander = new SecurityHandler();UserManager useraManager = (UserManager)hander.createProxyInstance(new UserManagerImpl());useraManager.addUser("张三", "123");}}对比Spring的IOC和AOP,动态代理有几点是不同的:
1.动态代理使用new的方式创建接口的代理服务类。
2.代理类中将需要添加将服务方法植入到目标类方法中的代码。
3.需要在客户端维护接口类的实现,不够灵活。
四、结尾感触:
Aop面向切片(服务)的编程时一种思想,在学习框架使用的时候,更应该学习这种设计思路,这是架构的基础,也是灵活架构的灵魂所在。