java - 注释顺序重要吗?

标签 java spring spring-boot annotations lombok

如您所知,注释驱动的编程越来越多地融入我们现在使用的大多数框架(即 Spring、Lombok 等)中。

此外,我们有时需要创建自定义注释。 (例如,使用方面记录给定类的所有公共(public)方法的进入/退出跟踪 - @LogAroundMethods)

因此,给定的类可以包含大量注释。

@LogAroundMethod // My custom annotation
@Slf4j // Lombok annotation
@Component // Spring annotation
public class ClientNotificationProxy {
//Code
}

@LogAroundMethod // My custom annotation
@Configuration // Spring annotation
@ConditionalOnClass(NotificationSender.class) // Spring annotation
@EnableConfigurationProperties(MessagingProperties.class) // Spring annotation
@Import({ MongoConfiguration.class, SpringRetryConfiguration.class }) // Spring annotation
public class StarterClientAutoConfiguration {
// Code 
}
  • 推荐的注释顺序是什么?
  • 特定订单是否有任何影响或好处?
  • 最佳答案

    在几乎所有情况下,答案都是否,订单无效。

    但实际上它有点复杂。

  • 考虑到注释处理器处理的注释,其他答案中已经说明它更多地取决于处理器运行的顺序。但是,处理器可以访问 AST,这允许它们确定源代码中注释的顺序。所以理论上注释处理器可以使生成的代码依赖于顺序,但我不知道这方面的任何例子,并称之为不好的做法。
  • 在运行时获取元素的注释时,您还可以访问订单。 The docs了解有关如何确定订单的更多信息。同样,实现可以使其行为依赖于顺序。
    我会再次考虑这种不好的做法。唯一的异常(exception)可能是可重复的注释,我可以想到这可能是合理的用例。

  • 如果对注解的顺序有任何依赖,这不太可能,这应该在注解的 JavaDoc 中说得很清楚。

    因此,通常您可以随意订购它们。我不知道任何关于注释顺序的样式指南,所以请让它对你合理。

    关于java - 注释顺序重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582135/

    相关文章:

    java - 如何将 'org.eclipse.core:org.eclipse.core.runtime:3.7.0' 库添加到 Intellij ant build

    java - 将属性从一个 Bean 复制到另一个实现构建器模式的 Bean

    java - 如何以编程方式调整窗口大小和更改窗口位置

    java - 使用 Spring Cache 和将数据保存在变量中有什么区别?

    java - 如何在没有任何属性的情况下获取 Spring Data Jpa FindFirst1000()

    java - Spring Batch 多线程卡住,没有任何异常输出

    java - 当尝试编译 MongoDB Utilites 类时,我不断收到 "error package com.mongodb does not exist"

    java - nar-maven-plugin javah 失败,常量池中的字节标记无效 : 18

    spring-boot - 如何使用不同的配置文件覆盖特定于配置文件的属性?

    java - data-th-text 和 th :text in Spring thymeleaf 有什么区别