AOP即 面向方面的编程,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP 和 IOC 是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。
AOP即代理设计模式实现细节:用较少的代码实现一个简单的代理模式。
如果不用AOP,实现一个代理模式需要实现的步骤
声明接口:注册需要被监听行为名称
接口实现类: 扮演被监控的类,负责被监听方法实现细节
InvocationHanler接口实现类:
1.次要业务/增强业务
2.将次要业务与被监听方法绑定执行
代理监控对象:
1.被监控类内存地址,被监控类实现的接口,
2.InvocationHandler实现类的实例对象
Spring AOP:简化代理模式实现步骤
声明接口:注册需要被监听行为名称
接口实现类: 扮演被监控的类,负责被监听方法实现细节
次要业务/增强业务
1.5.1AOP编程术语
切面(Aspect)
说白了就是次要业务
目标对象(Target)
当前需要监控的某个实例对象
织入(Weaving)
将切面插入到目标对象的目标方法的过程,即invoke行为。