【发布时间】:2013-05-13 02:43:35
【问题描述】:
我正在使用带有 cglib 加载时编织的 Spring 3.1.2.RELEASE,并且我正在尝试获得使用具有自定义注释和注释参数的方法的建议。
建议:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch) && @args(propertyToLock)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch, LockVal propertyToLock) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
这是我正在测试的课程:
public interface UpdateManager
{
public void processUpdate(MyBatchObject batch);
}
public class UpdateManagerImpl implements UpdateManager
{
@Lock
public void processUpdate(@LockVal("lockValue") MyBatchObject batch)
{
//Do stuff...
}
}
问题是我无法得到执行的建议。如果我删除切入点中的 @args 和 args 条件,建议会触发,但随后我必须挖掘 ProceedingJoinPoint 以获取我需要的参数。
为什么建议没有触发?我是不是做错了什么?
编辑:以下切入点可以作为 Spring 的独立程序工作:
@Aspect
public class MyAdvice
{
@Around("execution(@com.mycompany.locking.Lock * *(@com.mycompany.locking.LockVal(*), ..)) " +
"&& args(batch)"
public Object lockAndProceed(ProceedingJoinPoint pjp, Object batch) throws Throwable {
//Do stuff....
pjp.proceed();
}
}
但是,它在 JBoss 6 下使用加载时编织不起作用。我想我的问题应该是,为什么它可以作为一个独立的程序运行,而不是在 JBoss 6 下运行?
【问题讨论】:
-
我知道这是旧的,但仍列为未答复。如果它看起来合适,请您接受并支持我的回答吗?谢谢。
-
我现在已经离开了那个项目,但我可以说无论我如何运行它,代码都无法正常工作。我记得,它与 JBoss 6 中的 flat classloader + cglib 有关,这与以前的版本不同。
标签: spring aop aspectj spring-aop