我想在调用另一个类的特定方法时触发一个方法,这就是我考虑使用@Pointcut的原因。
下面的代码与我正在编写的代码几乎相同,我不知道还需要添加什么。
public class OrgManagerImpl implements OrgManager {
public IOrg getOrg(String orgShortName) {
}
}
这是应该触发的类:
@Aspect
public class OrgManagerSynchronizer {
@Pointcut("execution(* com.alvin.OrgManager.getOrg(..))")
public void classMethods() {}
@Before("classMethods()")
public void synchronize(JoinPoint jp) {
//code should be executed. but does not execute.
}
}
在我的 .xml 中指定了:
aop:aspectj-autoproxy
我还应该添加什么?接下来做什么?
最佳答案
检查以下内容。
1) 检查 OrgManagerImpl 是否在上下文 xml 中定义为 bean,或者在您拥有的上下文 xml 或该类的包中标记为 @Component &。
2)如果上面的事情是正确的,那么尝试如下更改切入点
@Pointcut("execution(* get*(..))")
该切入点拦截所有 get 方法。看看这个点切你的同步方法是否有效。如果它有效,那么至少你的 Spring 配置是好的。你只需要改进切入点表达式。但如果这也不起作用,那么你的 spring aop 配置本身就有问题,所以我们可以集中精力解决这些问题。
此外,如果这不起作用,请尝试提供更多信息,例如上下文 xml、bean java 类等。
关于java - Spring AOP @Pointcut 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11184104/