入点
pointcut 表示其他一些切入点
template 表示存在允许子方面或外部客户机实现某些配 置的模板算法
config 表示有一些数据驱动的配置
generic 表示泛型类型 参数
convention 表示编码规范
! 表示经过错误声明检验
简要描述
查看源代码时,读者会看到相应的注解:
// CODE aspect opt dev topic [specification..]: description
运行 Eclipse 的读者可将 Java 编译器任务标记器设置为选择 CODE 注解, 以快速查找可用库方面。Grep 可在不使用 Eclipse 的情况下实现类似功能。
在编写这些方面时,大多以示例特殊语言特性为目的。AspectJ 小组预测将 可通过多种途径获得这些库 —— 直接由我们提供,或由 AspectJ 社区内的独 立开发人员提供。您可以访问 AspectJ 主页,寻找最新的库代码,若有任何问 题,也可 直接与我联系。希望您编码愉快,部署愉快!
AOP@Work: 使用AspectJ 5检验库方面(17)
时间:2011-09-07 IBM Wes Isberg
表 8. 库方面一览
库方面
CacheMethodResult |
opt |
pro |
caching |
generic pointcut! |
缓存方法结果,按上下文实现键 |
CacheToString |
opt |
pro |
caching |
{pointcut} |
缓存 toString,手动清除 |
CachedItem |
opt |
pro |
caching |
generic pointcut |
缓存需手动清除的 Result 生成器 |
Const |
opt |
dev |
invariants |
annotation |
const 方法、字段和类的错误 |
EqualsBoilerplate |
opt |
pro |
lang |
within |
equals() 空值样本代码 |
GetterSetter |
opt |
dev |
invariants |
within convention! |
若在 getter-setter 之外执行 get-set 操作则出错 |
IdempotentMethod |
opt |
dev |
invariants |
{pointcut} convention! {annotation} |
执行及实现幂等方法 |
IdempotentMethods |
opt |
dev |
invariants |
{pointcut} convention! |
幂等方法(使用注释) |
InstanceFieldNaming |
opt |
dev |
invariants |
within |
要求实例字段名以 “f” 开头 |
NoCallsIntoTestFromOutside |
opt |
dev |
invariants |
within convention |
若非测试代码对测试代码引用则报错 |
NoNullParameters |
opt |
pro |
invariants |
within |
遇空公共参数抛出异常 |
NoSystemOut |
opt |
dev |
invariants |
{within} |
若使用 System.[out|err] 则报错 |
ObserveThrown |
opt |
pro |
errors |
pointcut template |
将所抛出的不带上下文异常记入日志,但会消除重复项 |
ObserveThrownContext |
opt |
pro |
errors |
{pointcut} |
将有 JoinPoint 上下文的异常记入日志 |
ParallelMethodImpl |
nec |
pro |
concurrent |
annotation convention! {config} |
方法中的并行调用 |
RethrowThreadDeath |
opt |
pro |
invariants |
|
从不捕获 ThreadDeath |
RethrowVMError |
opt |
pro |
invariants |
|
从不捕获 VirtualMachineError+ |
SpawnLogging |
opt |
pro |
concurrent |
within |
为提高性能而产生空日志记录调用 |
SpawnMutatedLogging |
opt |
pro |
concurrent |
within |
将日志记录重定向到另外一个线程 —— 如何为非空调用而延迟? |
SpawnTrueVoids |
opt |
pro |
concurrent |
pointcut |
产生没有副作用的空方法 |
SubjectObserver |
req |
pro |
patterns |
generic pointcut template |
主体-观察者协议 |
SystemStreamsToLog |
opt |
pro |
logging |
within template |
将 System.[out|err] 重定向到日志记录程序 |
ThrownObserver |
opt |
pro |
errors |
pointcut template |
超类,将所抛出的异常记入日志,避免出现重复 |
TimedCachedItem |
opt |
pro |
caching |
generic pointcut annotation |
带有生存期注释的 CachedItem |
TrackedMethods |
opt |
pro |
invariants |
template pointcut |
使用 FSM StateTracker 跟踪方法调用 |
TrackedNames |
opt |
pro |
invariants |
pointcut! config template |
使用可插拔跟踪程序按名称执行 FSM |
TrimInputStreamRead |
opt |
pro |
io |
within |
将输入流读取调整为可用 |
UtilityClassEnforced |
opt |
dev |
invariants |
annotation |
若可构造实用工具类则报错 |
Versioning |
opt |
pro |
patterns |
tag |
IVersioned 类的版本计数器 |
|