AOP 策略执行:实现灵活的访问控制与策略检查
1. AOP 策略执行概述
AOP(面向切面编程)开发的许多切面可以直接使用,无需修改,这种可重用性使得基于 AOP 的策略执行具有很高的成本效益。实现策略有两种选择:编译时检查和运行时检查,每种执行方式都有其适用场景和局限性。
2. 编译时执行
编译时检查意味着在编译阶段进行策略违规检查。在 Java 和 C++ 等强类型语言中,编译器已经执行了某些编译时检查,如类型匹配、访问控制等。使用 AspectJ 可以将这种检查提升到一个新的水平,能够指定自定义检查。
编译时执行使用 declare error 和 declare warning 构造来检测匹配的连接点并发出错误或警告。然而,编译时检查存在一些限制:
- 可使用的切入点受限 :只能使用静态可确定的切入点,像 this() 、 if() 和 cflow() 不能用于此目的。
- 无法检测连接点的缺失 :切入点用于选择连接点,不能指示连接点的缺失,例如无法检测空的 catch 块。
- 不能基于多个连接点进行分析 :无法实现像检查方法是否正确释放之前获取的并发锁这样的策略,因为这种检查需要包含两个连接点的表达式。
- 无法检测风格违规 :例如,切入点不能选择超过一定大小的方法、缺乏文档的
超级会员免费看
订阅专栏 解锁全文
168万+

被折叠的 条评论
为什么被折叠?



