当前位置: 首页 > 知识库问答 >
问题:

带有aspectj @annotation的Spring AOP重复]

宋岳
2023-03-14

我想用aspectJ应用注释。(使用Springboot 1.5.1,Mybatis 2.1.1)

因此,我制作了自定义注释和AspectJ…并应用它。

/** CustomAnnotation */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestAnnotation {
    String value();
}
/** AspectJ configuration */
@Component
@Aspect
public class AuditTrailAspect {
     @Autowired
     TestDAO dao;
     
    @Around("@annotation(TestAnnotation)") 
    public Object doSomethingAround(ProceedingJoinPoint joinPoint) throws Throwable {
        /* before proceed */
        Object result = joinPoint.proceed();
        /* after proceed */ 
        return result;
    }
}
/** Apply Annoataion at Repository */
@Repository
public interface TestDAO {
    @TestAnnotation(value = "test")
    int insertSomething(RequestDto dto);
}

(此代码很简单,有问题)

如果切入点表达式应用“执行”,则这段代码在存储库(DAO)中运行良好..此外,如果切入点表达式应用了' @annotation ',则该代码也适用于其他组件(服务..控制器)

但是,为什么我不能用AspectJ在Repository(DAO)中应用自定义注释呢?请帮帮忙..谢谢大家!

共有1个答案

周涵畅
2023-03-14

实现的接口上的批注不能被继承。

@Inherited导致注释(仅在类上)从超类继承,但对接口实现没有影响。

请注意,如果注释类型用于注释类以外的任何内容,则此元注释类型无效。还要注意,这个元注释只会导致注释从超类继承;实现接口上的注释没有任何效果。

 类似资料:
  • 我有一个自定义注释, 我正在将这个注释用于以下方法, 我在以下方面捕捉事件, @Around建议仅适用于“进程连接点”参数。如果将 XAudit 作为第二个参数传递,则会引发以下错误: 我需要在方面中使用xaud才能访问Xaud的操作。请分享一些关于如何在@周围方面中访问@Xaud值的指针。

  • 我正在尝试使用LTW在Weblogic上运行AspectJ。我的切入点是针对公共建构者和方法,建议是针对之前、之后和之后。当我访问一个简单的“Hello World”jsp时,出现以下错误: 这是我的aop。xml文件: 这是我的方面文件: 这个方面被编译(使用普通的javac编译器)到foo中。罐子 我通过添加以下内容来运行Weblogic: 我认为这很可能是类路径/类加载器问题,因为Aspec

  • Java+Spring+Maven应用程序: 有人能给我提供链接或者建议我一个纯AspectJ实现,不使用基于代理的Spring AOP吗? 如果我试图从同一中的访问,则不支持此操作。 我想知道:1)如何用切入点编写一个支持类内方法调用的aspectj?2)如何将其配置到我当前的Spring,maven项目中,使用aspectj加载时编织?3)如何配置aspectj maven插件,以便在Tomc

  • 我最近开始研究并编写了一个用于日志记录的简单方面。 null https://stackoverflow.com/questions/33164216/load-time-weaving-with-aspectj-in-jboss-as-7-1

  • 本文向大家介绍Spring用AspectJ开发AOP(基于Annotation),包括了Spring用AspectJ开发AOP(基于Annotation)的使用技巧和注意事项,需要的朋友参考一下 基于 Annotation 的声明式 在 Spring 中,尽管使用 XML 配置文件可以实现 AOP 开发,但是如果所有的相关的配置都集中在配置文件中,势必会导致 XML 配置文件过于臃肿,从而给维护和

  • 我有@tenatable注释来决定切入点: 这是我的观点: 这对于这个服务类来说没有任何问题: 当我调用doSomething()方法时,我的方面正在运行,这没问题,但我想为属于spring数据的CrudRepository接口实现方面。 我已经改变了我的Aspect来实现这一点,如下所示: 这是存储库: 但当我调用MyRepository中的任何方法时,它都不起作用。 有什么办法吗? 编辑:当我