AOP(Aspect Oriented Programming),也就是面对方面编程的技术
AOP 基于 IoC 基础,是对 OOP 的有益补充
AOP 将应用系统分为两部分,核心业务逻辑(Core business concerns)与横向的通用逻辑,也就是所谓的方面 Crosscutting enterprise concerns,例如,所有大中型应用都要涉与到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等
AOP 正在成为软件开发的下一个光环
使用 AOP,你可以将处理aspect 的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect
AOP 可以防止代码混乱
Spring framework 是很有前途的 AOP 技术
作为一种非侵略性的、轻型的 AOP framework,你无需使用预编译器或其他的元标签,便可以在 Java 程序中使用它
这意味着开发团队里只需一人要应付 AOP framework,其他人还是像往常一样编程
AOP 概念 让我们从定义一些重要的 AOP 概念开始
— 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象
事务管理是 J2EE 应用中一个很好的横切关注点例子
方面用 Spring 的 Advisor 或拦截器实现
— 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出
— 通知(Advice):在特定的连接点,AOP 框架执行的动作
各种类型的通知包括“around”、“before”和“throws”通知
通知类型将在下面讨论
许多 AOP 框架包括 Spring 都是以拦截器做通知模型,维护一个“围绕”连接点