我试图在方法注释上创建一个 Aspectj 切入点,但我一直用不同的方法失败。我正在使用 aspectj autoproxy(我的 spring 上下文中没有配置其他编织)。我的类(class)是这样的:
public interface Intf
{
@SomeAnnotation
void method1() throws SomeExc;
}
public class Impl implements Intf
{
@Override
public void method1() throws SomeExc
{
//...
}
}
@Aspect
public class MyAspect
{
@AfterThrowing(
pointcut = "execution(* *(..)) && @annotation(SomeAnnotation)",
throwing = "error")
public void afterThrowing(JoinPoint jp, Throwable error)
{
System.err.println(error.getMessage());
}
}
@Component
public class Usage
{
@Autowired
Intf intf;
public void doStuff()
{
intf.method1();
}
}
所以我想知道为什么 aspectj 不会创建切入点。我设法使用
execution(* *(..) throws SomeExc)
让它工作,它为我完成了这项工作,但我仍然想知道我做错了什么。此外,由于
method1
是在接口(interface)中定义的,并且我在实现类上指定了注释,有没有办法让它以这种方式工作?其他代理机制(如事务管理/安全性)在 spring 的其他部分以这种方式工作,对吗?如果我使用接口(interface)代理会指定实现类的切入点创建切入点吗? (我想不是,因为我没有使用 cglib) 最佳答案
尝试将 @Component 添加到 MyAspect 类
@Component
@Aspect
public class MyAspect {
...
关于java - Spring aspectj注解切入点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14953036/