面向方面编程AOP详解:术语、关键技术与织入

需积分: 1 0 下载量 198 浏览量 更新于2024-09-19 收藏 123KB DOC 举报
"AOP技术总结 2" AOP(Aspect Oriented Programming)是面向方面编程,它由Xerox PARC的研究者在20世纪90年代提出,旨在解决传统编程中横切关注点与核心关注点混合的问题。AOP的核心在于将业务逻辑与通用服务,如日志、事务管理、安全等,进行分离,使得代码更易于维护和扩展。通过使用AOP,开发者可以创建被称为方面的独立模块来处理这些横切关注点。 1.1 AOP术语详解 1. **关注点(Concern)**: 关注点是软件系统中任何我们关心的功能或问题领域。比如,信用卡系统的核心关注点是交易处理,而系统级别的关注点则包括日志记录、事务管理、安全性等。AOP将系统级关注点称为横切关注点,因为它们会“横切”多个核心功能。 2. **连接点(Joinpoint)**: 连接点是程序执行中的特定点,可能是方法调用、对象构造或销毁等。它们是系统内在的、无需显式声明的点。连接点的选择和作用由切入点决定。 3. **切入点(Pointcut)**: 切入点是用于定义哪些连接点将被横切代码影响的规则。它是连接点的子集,通常由一个切入点表达式定义,该表达式可以是方法名、类名或其他条件,用于精确匹配连接点。 4. **通知(Advice)**: 通知是在满足切入点的连接点上执行的代码,即横切行为。它可以是前通知(在连接点之前执行)、后通知(之后执行)、环绕通知(包围整个连接点)等,实现了横切关注点的具体逻辑。 AOP的实现关键在于**织入(Weaving)**,即如何将方面的代码整合到目标程序中。织入可以在编译时、类加载时或运行时完成。不同织入时机有不同的优缺点,例如编译时织入能提高运行效率,但可能需要特殊的编译器支持;运行时织入则更灵活,但可能会牺牲一些性能。 织入方式主要包括: - **编译时织入**: 通过源码转换或字节码操作在编译阶段将方面与目标代码结合。 - **类装载时织入**: 在类装载到JVM时进行织入,通常通过代理类实现。 - **运行时织入**: 在程序运行期间动态地将方面织入,通常使用动态代理实现。 AOP技术的应用广泛,如Spring框架中的AOP支持,使得开发者可以方便地实现日志记录、事务管理等横切关注点,而不必将它们硬编码到业务逻辑中。这不仅提高了代码的可读性和可维护性,也促进了代码的重用,降低了系统的复杂度。