Sprint Boot @ConfigurationProperties 是不是与 Eclipse IDE 和 InteliJ IDEA 兼容?

Posted

技术标签:

【中文标题】Sprint Boot @ConfigurationProperties 是不是与 Eclipse IDE 和 InteliJ IDEA 兼容?【英文标题】:Is there a value for the Sprint Boot @ConfigurationProperties compatible with both Eclipse IDE and InteliJ IDEA?Sprint Boot @ConfigurationProperties 是否与 Eclipse IDE 和 InteliJ IDEA 兼容? 【发布时间】:2020-05-23 12:10:37 【问题描述】:

拥有一个带有运行状况执行器端点的简单 Sprint Boot 应用程序,允许您在 application.properties 中指定和绑定此类属性(以下列可接受的方式之一):

# Eclipse IDE
management.endpoint.health.show-details=when-authorized
# or
# InteliJ IDEA
management.endpoint.health.show-details=when_authorized

此属性的值是 Enum 类型之一。

由于 Spring Boot @ConfigurationProperties 注释的 Relaxed Binding 特性,这两种变体都被接受。

虽然从 Spring 和 Maven 构建的角度来看,这两个值都是有效的,但两个 IDE 中的每一个都只会建议(自动完成、悬停文档、ctrl-click-navigate-to-definition)他们自己的值版本属性,如果使用另一个则报错。

有没有办法让两个世界都快乐?

【问题讨论】:

【参考方案1】:

找到了一个让每个人(几乎)都开心的版本(Maven、InteliJ IDEA、Eclipse):

management.endpoint.health.show-details=WHEN_AUTHORIZED

Spring Boot 实现是这样定义的,使用这种形式,几乎每个人都很高兴。

Eclipse IDE * 如果您键入“W”,自动完成将跟随大写 * 悬停文档和代码导航都有效

InteliJ IDEA * 自动补全不会提示大写版本(但使用时不会显示错误) * 悬停文档和代码导航都有效

而 Maven 并不关心,因为 Spring Boot 在这里使用的是宽松的绑定规则。

【讨论】:

【参考方案2】:

这是 IDEA 中的一个已知问题。请投票/关注:https://youtrack.jetbrains.com/issue/IDEA-171730

【讨论】:

以上是关于Sprint Boot @ConfigurationProperties 是不是与 Eclipse IDE 和 InteliJ IDEA 兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Sprint Boot 学习Q&A

sprint boot 自动创建web应用

Sprint Boot @ConfigurationProperties 是不是与 Eclipse IDE 和 InteliJ IDEA 兼容?

Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?

如何在 Spring Boot 应用程序中使用 Keycloak Policy Enforcer

初识spring-boot异步编程