注释顺序重要吗?

2023-11-25

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

此外,我们有时需要创建自定义注释。 (例如,使用切面记录给定类的所有公共方法的进入/退出跟踪 -@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 
}
  • 建议的注释顺序是什么?
  • 特定订单是否有任何影响或好处?

几乎所有情况下答案都是不,该命令没有任何作用。

但实际上情况有点复杂。

  1. 考虑到注释处理器处理的注释,其他答案中已经指出,它更多地取决于处理器运行的顺序。但是,处理器可以访问 AST,这使它们能够确定源代码中注释的顺序。因此,理论上注释处理器可以使生成的代码依赖于顺序,但我不知道这方面的任何示例,并且认为这是不好的做法。

  2. 在运行时获取元素的注释时,您还可以访问顺序。The docs了解有关如何确定订单的更多信息。同样,实现可以使其行为依赖于顺序。 我再次考虑这种不好的做法。唯一的例外可能是可重复的注释,我可以想到这是合理的用例。

如果对注释的顺序有任何依赖(这种情况不太可能发生),那么应该在注释的 JavaDoc 中非常清楚地说明这一点。

因此,通常您可以随意订购。我不知道有关注释顺序的任何样式指南,因此只需使其对您来说合理即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

注释顺序重要吗? 的相关文章

  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 如何从控制器访问片段中的片段?

    我有一个名为 cutleryCustomerSearch 的视图 其中包含 替换 一个片段 div div div div 在此片段中 我有一个表 我喜欢通过 ajax 更新它 table 我如何设置处理 ajax 请求的控制器方法的返回
  • Spring boot 2.3 中找不到 javax.validation [重复]

    这个问题在这里已经有答案了 升级到 Spring Boot 2 3 1 后javax validation找不到包
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • 如何使用 Jersey 将嵌套列表封送为 JSON?我得到一个空数组或一个包含数组的单元素字典数组

    我正在开发一个使用 Jersey 将对象转换为 JSON 的项目 我希望能够写出嵌套列表 如下所示 data one two three a b c 我想要转换的对象首先将数据表示为 gt gt 我认为 Jersey 会做正确的事情 以上输
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • 带 getClassLoader 和不带 getClassLoader 的 getResourceAsStream 有什么区别?

    我想知道以下两者之间的区别 MyClass class getClassLoader getResourceAsStream path to my properties and MyClass class getResourceAsStre
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 如何清除最高有效位?

    如何将 int 中的最高有效位从 1 更改为 0 例如 我想将01101更改为0101 编辑 简化 并解释 答案 我在下面给出的答案是多余的 如果你only目标是将最高有效位设置为零 代码的最后一位构造了一个位掩码 其中包含数字中的所有位
  • 使用 Javascript 和 CSS 的 ReactJs 模态

    如何附加带有 body 结束标记的 ReactJS 模态窗口 以使用 body 标记设置模态绝对定位 这是添加在另一个组件内的示例 div p Model Pop up p div
  • 我们可以为标题中的标题标签设置样式吗

    我们可以将样式设置为 html head 中 header 中的标题标签 如下所示 我试过了没成功 您可以将 CSS 应用到
  • Python 快速计算大量距离

    我有 36 742 个点的输入 这意味着如果我想计算距离矩阵的下三角 使用文森蒂近似 我需要生成 36 742 36 741 0 5 1 349 974 563 个距离 我想保留彼此距离在 50 公里以内的配对组合 我当前的设置如下 sho
  • 如何检查java数组是否为空[重复]

    这个问题在这里已经有答案了 我想知道这段代码对于检查数组是否为空是否有效 或者我应该检查 null 吗 if arrayName System out println array empty else System out println
  • 使用JAVA(jsp)检查哪些复选框被选中

    我正在尝试创建一个 servlet 它显示一个带有复选框的简单表单 当用户选择他想要的复选框数量并单击 确认 时 我的 servlet 中的 POST 请求会检查哪些框已被选中并基于数据库查询 我不确定如何在 Java 中执行此操作 因为用
  • 有没有办法判断测试中是否将 --debug 或 --verbose 传递给了 PHPUnit?

    我正在对使用 CaptureEntirePageScreenshotToString 函数的 PHPUnit 的 Selenium 扩展进行一些重载 并且我只想在传入 verbose 或 debug 时才打印屏幕截图的路径 例如 phpun
  • 使用 php 在后台执行 shell 脚本

    我需要执行一个 shell 脚本 问题是我想这样做 Command nohup cvlc input sout transcode vcodec h264 acodec mp3 samplerate 44100 std access htt
  • svn commit 触发谷歌分析注释?

    我想知道是否有一种方法可以创建由 SVN 提交触发的脚本 并且会在 google 分析配置文件中添加注释 这对于网络应用程序中的某些变化会很方便 这最终会对应用程序的分析产生影响 目前无法通过 Google Analytics API 数据
  • 检查一个圆是否包含在另一个圆中

    我正在尝试检查一个圆是否包含在另一个圆内 我不确定它背后的数学是否是问题 或者是否是我的 if 语句 因为我不断得到True对于我通过的任何事情 Get center returns x y Get radius returns radiu
  • 使用 Objective-C 禁用 UIWebView 默认滚动行为

    我知道你可以使用 JavaScript 来做到这一点
  • 将按钮的可见属性分配给静态方法结果

    我试图使用以下代码根据用户的角色隐藏按钮
  • 如何修复“在 C99 模式之外使用 for 循环初始声明”GCC 错误?

    我正在尝试解决3n 1问题我有一个for循环看起来像这样 for int i low i lt high i res runalg i if res gt highestres highestres res 不幸的是 当我尝试使用 GCC
  • D3树垂直分离

    我使用的是 D3 树布局 例如 http mbostock github com d3 talk 20111018 tree html 我已经根据自己的需要对其进行了修改 但遇到了问题 该示例也存在同样的问题 如果打开的节点太多 它们就会变
  • 在Spring中使用@Cacheable和@CacheEvict

    我开发了一种方法 使用 Cacheable注解 代码是 Cacheable value reporties key root methodName manager name public List
  • 如何将 WinForms 文本框设置为覆盖模式

    是否可以强制 Windows 窗体应用程序中的文本框在 覆盖模式 下工作 即当用户键入而不是添加时替换字符 否则 有没有标准的方法来获得这种行为 尝试使用 MaskedTextBox 并将 InsertKeyMode 设置为 InsertK
  • Fabric JS - 将对象发送到后台

    当您选择一个对象 在我的示例中是多边形 时 它会自动移动到前面 我正在寻找一种方法来防止 z 轴上的移动或在选择后将其向后发送 也许有人可以提供帮助 这是一个简单示例的链接 http jsfiddle net 98cuf9b7 1 当您选择
  • Sonata Admin - 只允许显示登录用户创建的内容

    我已经设置了一个奏鸣曲管理界面 允许用户创建特定内容 但如何限制用户编辑其他用户创建的内容 为了论证起见 用户登录并创建了一个博客 在博客列表视图中 仅显示博客that应显示创建的用户 目前 所有内容都会显示给每个用户 我确实有组 角色设置
  • 从双精度数到无符号 64 位整数的安全转换

    在我的平台上 打印 9223372036854775808 double x 1e19 std cout lt lt static cast
  • 注释顺序重要吗?

    如您所知 注释驱动编程越来越多地融入到我们现在使用的大多数框架中 即 Spring Lombok 等 此外 我们有时需要创建自定义注释 例如 使用切面记录给定类的所有公共方法的进入 退出跟踪 LogAroundMethods 因此 给定的类