pis*_*var 4 java aspectj sync aspect
我正在构建一个带有aspectj的Rest服务器.对于同步,我想使用方面.我定义了这样的切入点来捕获发生更新和删除事件的所有点:我定义了一个注释并使用注释来捕获要同步的方法:
synchronized pointcut syncJoinPoints():call (@Synchronizes * *(..));
Run Code Online (Sandbox Code Playgroud)
如果切入点同步会发生什么,同步切入点意味着什么.拦截切入点的线程是由AspectJ插件新创建的还是使用进入截获方法的线程?
谢谢您的帮助.
AspectJ本身不创建线程:编织"仅"通过注入一些额外的指令来修改代码,但它继续在相同的上下文中运行.
在synchronized对切入点定义关键字不会做任何有用的.如果你想要实现的是将所有调用(或执行,这意味着更少的修改代码)同步到@Synchronizes在同一个锁上注释的方法,你需要一个周围的建议:
public aspect SynchronizingAspect {
private static final Object lock = new Object();
pointcut syncJointPoint(): execution(@Synchronizes * *.*(..)); // or call()
Object around(): syncJointPoint() {
synchronized(lock) {
return proceed();
}
}
}
Run Code Online (Sandbox Code Playgroud)