《AspectJ静态横切与切面使用全解析》
在软件开发中,AOP(面向切面编程)是一种强大的编程范式,而AspectJ作为AOP的重要实现,提供了丰富的功能来实现横切关注点的模块化。本文将深入探讨AspectJ中的静态横切以及切面的使用。
1. 静态横切:修改系统静态结构
静态横切是AspectJ中用于影响系统静态结构的重要方式,它可以单独使用,也能为动态横切提供支持。静态横切包含成员引入、注解补充、类型层次修改、织入时声明和异常软化等几种构造方式。
1.1 修改类型层次
在某些情况下,修改类的实现以实现特定接口可能存在困难,例如使用第三方库时,或者当太多类需要相同行为时,这种修改可能并不理想。而AspectJ的 declare parents
构造方式可以帮助我们修改现有类和接口的继承层次。它有两种形式:
- declare parents : [TypePattern] implements [InterfaceList];
- declare parents : [TypePattern] extends [Class or InterfaceList];
需要注意的是,父类声明必须遵循常规的Java对象层次规则,不能声明类为接口的父类,也不能导致多重继承。
例如,如果希望 banking.entities
包中的所有类都具有通知功能,可以添加如下切面:
package ajia;
public