切入点工作得create()
很好,但我无法让setStatus()
切入点工作,但我尝试......我已经尝试过@Before
, @After
, @AfterReturning
,但没有。
根据调试器,这两种方法都被调用。
package com.baz;
@Aspect
public class ServiceAspect {
@Pointcut("execution(* com.foo.ServiceImpl.create(..))")
public void create() {}
@Pointcut("execution(* com.bar.Subscription.setStatus(..))")
public void setStatus() {}
// works
@AfterReturning(pointcut="create()", returning="retVal")
public void afterCreate(Object retVal) {
// omitted
}
// doesn't work
@Before("setStatus()")
public void status() {
// omitted
}
// doesn't work
@Before("setStatus() && args(status)")
public void status(int status) {
// omitted
}
// doesn't work
@After("setStatus()")
public void status() {
// omitted
}
// doesn't work
@AfterReturning(pointcut="setStatus()")
public void status2() {
// omitted
}
// doesn't work
@AfterReturning(pointcut="setStatus()", returning="retVal")
public void afterSetStatus(Object retVal) {
// omitted
}
// doesn't work
@Around("setStatus()")
public Object aroundStatus(ProceedingJoinPoint pjp) throws Throwable {
Object output = pjp.proceed();
return output;
}
}
这些方法如下所示:
public class Subscription extends FooBar implements Baz {
public void setStatus(int status) { /* ... */ }
}
public class ServiceImpl implements Service {
public Subscription create(Session session, Subscription template) { /* ... */ }
}
编辑
我试过同时使用<aop:aspectj-autoproxy />
,<aop:aspectj-autoproxy proxy-target-class="true"/>
和<aop:aspectj-autoproxy proxy-target-class="false"/>
.
编辑 2
我试过setStatus()
直接打电话Subscription
,但也没有。
Subscription subscription = new Subscription();
subscription.setStatus(1);