AOP和spring AOP学习记录
AOP基本概念的理解 面向切面AOP主要是在编译期或运行时,对程序进行织入,实现代理, 对原代码毫无侵入性,不破坏主要业务逻辑,减少程序的耦合度。 主要应用范围: 日志记录,性能统计,安全控制,事务处理,异常处理等等 名词性概念 切面(Aspect) 通常是一个类,在里面可以定义切入点和通知,即 切面=切入点+通知 。 连接点(Joint Point) 被拦截到的点,因为 Spring 只支持方法类型的连接点,所以在 Spring 中连接点指的就是被拦截的到的方法,实际上连接点还可以是字段或者构造器。 切入点(Pointcut) 对连接点进行拦截的定义。 通知(Advice) 拦截到连接点之后所要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类。 AOP 代理 AOP 框架创建的对象,代理就是目标对象的加强。Spring 中的 AOP 代理可以使 JDK 动态代理,也可以是 CGLIB 代理,前者基于接口,后者基于子类。 织入 (Weaving) 把切面加入到对象,并创建出代理对象的过程。 动态代理 在运行期间生成对象进行代理, spring AOP就是动态代理。 静态代理 自己编写代理对象,在编译器织入, AspectJ就是在编译期间进行织入,从而减少对运行时效率的影响。 SpringAOP 根据对象是否是实现类选择代理的方法 如果要代理的对象实现了接口,spring