【发布时间】:2014-07-01 03:04:58
【问题描述】:
我正在使用 aspectj 来跟踪 Java 应用程序中的状态变化。这是我的建议:
public aspect TrackStateChanges
{
after( Stateful stateful, StateTracker stateTracker ):
@annotation(stateful)
&& target(stateTracker)
&& !cflow(execution(@PrivilegedAccessor * StateTracker+.*(..)))
&& (set(@Stateful * StateTracker+.*)
|| get(@Stateful * StateTracker+.*))
&& withincode(@StateWriter private * StateTracker+.*(..))
{
stateTracker.onStateChanged( stateful.value() );
}
}
这是我的注释类:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Stateful
{
ChangedPart value ();
}
当我构建它时,会出现以下警告:
警告:ajc:在 aspect.TrackStateChanges 中定义的建议尚未应用 [Xlint:adviceDidNotMatch]
我的进口很稳定,我认为这不是问题。我问是因为 ajc 在某些情况下表现得很奇怪。大多数时候它工作正常,但对于特定的状态字段它不能正常工作。问题是它运行stateTracker.onStateChanged(stateful.value()) 然后执行停止,线程在执行finally 块后被杀死。我没有得到任何例外或什么都没有。这个问题与警告有关吗?还是别的什么?
我正在使用 aspectj-maven-plugin v1.6 和 aspectjrt v1.7.3
【问题讨论】:
标签: aspectj