1.什么是AOP?
这里引用百度百科的解释,如图
2.AOP的作用
AOP采用横向抽取机制,补充了传统纵向继承体系(OOP)无法解决的重复性代码优化(性能监视,事务管理,安全检查等),一句话概括就是:将业务逻辑和系统处理的代码(关闭连接、事务管理、日志处理等)解耦。重复性代码被抽取出来之后,维护起来更加方便。
3.AOP的实现
(1)AspectJ(一个Java实现的AOP框架),AspectJ主要采用的是编译期织入,在这个期间使用AspectJ的acj编译器(类似javac)把aspect类编译成class字节码后,在java目标类编译时织入。这种方式的缺点是过于复杂,破坏封装,需要专门的Java编译器。
(2)Spring 基于AspectJ的AOP实现(通过动态代理技术实现的 ),其实就是Spring+AspectJ的整合。以下是一个简单的demo。
(a) 添加Spring和AOP相关的依赖
(b) 编写接口,目标类和方法
(c) 编写配置文件,配置目标类
(d) 编写通知类和增强方法(基于XML方式实现)
(e) 配置文件中配置通知类和切面
(f) 测试
以下再用基于注解的方式实现AOP
(1)目标类和切面类
(2)配置文件
(3)测试