【问题标题】:In Spring Boot while annotating a class then every method gets annotated with same annotation [closed]在Spring Boot中注释一个类时,每个方法都会用相同的注释进行注释[关闭]
【发布时间】:2020-05-01 11:20:18
【问题描述】:

在 Spring Boot 中,当使用一些注解(例如 @Component、@Service、@Entity ..... 等)对类进行注解时,每个方法都会使用相同的注解进行注解。请解释一下,这对我很有帮助。

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    您提到的所有注释都是类级别的注释。注释不会被复制,它们只是保留在那里并仅供该元素使用。

    如果您看到特定注解的 Javadoc,您会发现所有注解都已使用 @Target 进行注解,其参数为 ElementType。这个枚举定义了注解的类型。

    但也有一些注解,如 @Transactional ,由具有此注解的父方法调用的方法使用,并且此注解由提供此功能的 @Inherited 注解引导。

    public enum ElementType {
        /** Class, interface (including annotation type), or enum declaration */
        TYPE,
    
        /** Field declaration (includes enum constants) */
        FIELD,
    
        /** Method declaration */
        METHOD,
    
        /** Formal parameter declaration */
        PARAMETER,
    
        /** Constructor declaration */
        CONSTRUCTOR,
    
        /** Local variable declaration */
        LOCAL_VARIABLE,
    
        /** Annotation type declaration */
        ANNOTATION_TYPE,
    
        /** Package declaration */
        PACKAGE
    }
    

    我建议你看一下注解的Javadoc,在那里你会发现很多概念。

    【讨论】:

      【解决方案2】:

      注解在最后,java代码从你身上抽象出来。

      因此,它将取决于特定注释的实现,无论针对它的代码是适用于每个方法,还是仅适用于类。

      • @override 仅适用于方法
      • @component 适用于类,行为也会影响封闭方法
      • @PathVariable 仅适用于方法参数

      进一步丰富你的概念

      https://www.baeldung.com/java-custom-annotation

      【讨论】:

        猜你喜欢
        • 2021-04-25
        • 1970-01-01
        • 2017-10-31
        • 2018-02-23
        • 1970-01-01
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 2016-06-04
        相关资源
        最近更新 更多