0

我将我的项目从 Spring boot 1.5 迁移到 Spring boot 2。这样做之后,我@NotNull private在实现 @NotNull 注释的每个字段上都有一个 Missorted 修饰符(从javax.validation.constraints.*。当将分支切换回 1.5 时,此警告消失

我尝试禁用 intelij 上的所有插件并删除我为代码样式和检查所拥有的自定义配置。只有在搜索此类错误警告时找到的有效信息是指出 Intelij 正在采用“java 语言规范”,但在查看这些规范时,它似乎仍然应该是注释后跟修饰符,而不是相反。(https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.3.1

// This does not give a warning
private @NotNull String myString1;

// This does give a warning, wanting me to reformat to the one above
@NotNull
private String myString2;

我想保持第二个示例中的格式,它比上面的更具可读性。当然在使用多个字段时。

4

2 回答 2

1

从 Java 8 开始,引入了 TYPE_USE Annotation.Element_type,这改变了注解的使用方式(以及它的行为方式)。正因为如此,现在可以在此处找到不同格式的简短描述:https ://dzone.com/articles/java-8-type-annotations 。升级到 Spring boot 2 我也更新了

<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>1.1.0.Final</version>
</dependency>

<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>2.x.x</version>
</dependency>

显然,这在使用 spring boot 依赖项时已经改变:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

长话短说:我们将不得不习惯于使用 TYPE_USE 和 TYPE_PARAMETER ElementTypes 进行注释

我只是不得不花更多时间搜索,出于沮丧在这里问它......

于 2019-09-23T15:27:32.057 回答
0

“错误的修饰符”是默认禁用的 IntelliJ IDEA 检查。如果启用它,默认情况下它需要在修饰符之前放置注释,但它有一个选项可以启用相反的行为。看起来您的项目有一个共享的检查配置文件,其中有人启用了此检查并关闭了“要求在关键字之前对注释进行排序”选项。您可以转到设置 | 检查并搜索“错误的修饰符”以禁用检查或更改其报告警告的方式。

于 2019-09-23T13:01:40.603 回答