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