application.properties 中的 Spring Boot 未知属性

Posted

技术标签:

【中文标题】application.properties 中的 Spring Boot 未知属性【英文标题】:SpringBoot unknown property in application.properties 【发布时间】:2017-09-19 15:31:36 【问题描述】:

我已经使用 Spring Initializr,使用嵌入式 Tomcat + Thymeleaf 模板引擎生成了一个 Spring Boot Web 应用程序。

我将此属性放在我的 application.properties 中

default.to.address=nunito.calzada@gmail.com

我使用 Spring Tool Suite Version: 3.8.4.RELEASE 作为开发环境,但在编辑器'default.to.address' is an unknown property. 中收到此警告

我应该把这个属性放在另一个属性文件中吗?

【问题讨论】:

【参考方案1】:

这是因为它是由 STS 属性编辑器打开的,该编辑器会验证属性以及其他内容。将它放在 application.properties 文件中并没有什么坏处,您甚至可以为该属性添加自己的元数据。

http://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html

【讨论】:

【参考方案2】:

我在 application.properties 中也遇到了同样的警告,并正在寻找一种方法来摆脱这种情况。寻找答案把我带到了这里。所以我发布了我的答案;它可能有用。

在 application.properties 中使用您的自定义属性并没有什么坏处。有两种方法可以摆脱这个 -

    如其中一个答案所述,您可以为自定义属性添加元数据(手动或在 STS 中使用快速修复)。

    如果您不想添加元数据,则在 STS 中,转到窗口 -> 首选项 -> 弹簧 -> 启动 -> 属性编辑器。在这里,选择“未知属性”作为忽略。默认是警告。

【讨论】:

在 STS 4 中似乎不再可能了,我已经提出了一个关于它的问题 github.com/spring-projects/sts4/issues/654 我对我上次的回复进行了更正:在 STS 4.11 中,您将在 Window -> Preferences -> Language Servers -> Spring Language Servers -> Spring Boot Language Servers -> Yaml Editor or Properties Editor 中找到此选项。【参考方案3】:

我使用这种方法在文件 application.properties 中添加属性。

在 application.properties 中添加您的新属性: default.to.address=nunito.calzada@gmail.com 将鼠标悬停在新属性上,您会看到一个“快速修复工具提示”,建议您添加新属性:为“default.to.address”创建元数据。

然后,浏览要绑定属性的类和字段并添加此注解:

@Value("$default.to.address")
private String address;

现在你的对象字段应该用属性值来赋值。

【讨论】:

【参考方案4】:

您应该尝试在环境中添加这些类型的值,而不是 application.properties,因为您可以选择随时更新这些值,而无需进行编译更改/重新部署更改。 application.properties 可能更有益于您永远不会更改的属性,例如数据库凭据。

【讨论】:

【参考方案5】:

您需要使用spring-boot-configuration-processor,它将为您生成配置元数据。

查看示例:https://www.baeldung.com/spring-boot-configuration-metadata

【讨论】:

以上是关于application.properties 中的 Spring Boot 未知属性的主要内容,如果未能解决你的问题,请参考以下文章

@Autowired 基于 application.properties 中的属性

SpringBoot 中 application.properties 中的 @Value 始终为 null

Spring Boot application.properties 中的日志级别问题

是否可以根据springboot中application.properties中的前缀创建多个bean

Spring Boot 项目中的 application.properties 文件在哪里?

Spring Boot 无法读取 Docker 中的 application.properties