M.M*_*as. 6 java spring annotations lombok spring-boot
如您所知,注释驱动的编程越来越多地融入我们现在使用的大多数框架中(即 Spring、Lombok 等)。
此外,我们有时需要创建自定义注释。(ig 使用方面 - 记录给定类的所有公共方法的进入/退出跟踪@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
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*eke 10
几乎在所有情况下,答案都是“否”,该命令没有任何作用。
但实际上情况有点复杂。
考虑到注释处理器处理的注释,其他答案中已经指出,它更多地取决于处理器运行的顺序。但是,处理器可以访问 AST,这使它们能够确定源代码中注释的顺序。因此,理论上注释处理器可以使生成的代码依赖于顺序,但我不知道这方面的任何示例,并且认为这是不好的做法。
在运行时获取元素的注释时,您还可以访问顺序。该文档提供了有关如何确定顺序的更多信息。同样,实现可以使其行为依赖于顺序。我再次考虑这种不好的做法。唯一的例外可能是可重复的注释,我可以想到这是合理的用例。
如果对注释的顺序有任何依赖(这种情况不太可能发生),那么应该在注释的 JavaDoc 中非常清楚地说明这一点。
因此,通常您可以随意订购。我不知道有关注释顺序的任何样式指南,因此只需使其对您来说合理即可。
特定订单是否有任何影响或好处?
据我所知,情况并非如此。请记住注释的工作原理:某些代码“查看”您的代码,并检查注释是否存在。含义:它“获取”一组注释,并检查它关心的注释是否在该数组中。所以顺序应该是无关紧要的。
当然,当我们谈论具有编译时效果的注释时,情况可能会有所不同。此类注释会对编译过程本身产生影响,因此最坏的情况是,注释的顺序会改变编译过程。
推荐的注释顺序是什么?
适合您的。含义:与您的团队坐下来,问自己“我们是否更喜欢特定的订单”。如果是这样,请将其写下来,并让人们遵守该规则。
现实世界的例子:我们使用注释来“描述”我们的“对象”的“属性”。在某些时候,我们发现在添加新属性时经常忘记注释 X。因为属性是按随机顺序写下来的,因此很难手动处理(而且我们有很多不同的注释,有时单个属性上有 5 到 10 个注释)。
我们的“解决方案”:注释必须按字母顺序排序(当用于此类“属性”定义时)。我们甚至有一个单元测试来检查排序顺序。从那时起:所有“属性”定义都遵循相同的规则。这对我们来说非常有效,因为每个人都有相同的期望和心态。
| 归档时间: |
|
| 查看次数: |
1701 次 |
| 最近记录: |