java - Spring aspectj 注释切入点

标签 java spring aop

我试图在方法注释上创建一个 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/

相关文章:

java - 如何拦截类型或方法的元注释

spring - 为什么spring不依赖aspectj会抛出aspectj错误?

java - 打印机可用性

java - GUI动画: Slider Value between Action and Change classes?

java - Spring MVC 3.1 - 请求头字符编码问题[UTF-8]

java - 如何使用 spring boot 动态创建 imap 接收器适配器?

java - kafka -> flink - 性能问题

java - spring-boot2 上的 Resilience4j - 断路器未打开

java - 如何从运行在服务器外部(Web 应用程序)的 Spring hibernate 项目中使用 JBoss AS7 JNDI 数据源?

java - Spring Roo 和面向方面的编程