Spring Boot 屬性前綴必須是規範形式
一、概述
在這個快速教程中,我們將仔細研究 Spring Boot “Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters, and must start with a letter
”。
首先,我們將闡明在 Spring Boot 中導致此錯誤的主要原因。然後,我們將深入研究如何使用實際示例重現和解決它。
2.問題陳述
首先,讓我們了解錯誤消息的含義。 “ Canonical names should be kebab-case ”只是告訴我們Canonical names(Canonical names是指唯一標識一個屬性的屬性名)應該是kebab case。
為保證一致性, @ConfigurationProperties
註解的prefix
參數中使用的命名約定應遵循kebab 大小寫。
例如:
@ConfigurationProperties(prefix = "my-example")
在上面的代碼片段中,前綴my-example
應該遵守 kebab 大小寫約定。
3.Maven依賴
由於這是一個基於 Maven 的項目,讓我們將必要的依賴項添加到pom.xml
中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
為了重現問題, spring-boot-starter
是唯一需要的依賴項。
4.重現錯誤
4.1.應用配置
如果您不熟悉 Configuration 屬性,可以通過探索 Spring Boot 中的 ConfigurationProperties 指南來更好地理解。
讓我們註冊所需的組件:
@Configuration
@ConfigurationProperties(prefix = "customProperties")
public class MainConfiguration {
String name;
// getters and setters
}
然後,我們需要在application.properties
文件中添加一個自定義屬性:
custom-properties.name="Baeldung"
application.properties 位於src/main/resources
下:
| pom.xml
+---src
| +---main
| | +---java
| | | \---com
| | | \---baeldung
| | | ...
| | | ...
| | \---resources
| | application.properties
現在,讓我們通過在項目根文件夾中執行mvn spring-boot:run
命令來運行示例 Spring Boot 應用程序,看看會發生什麼:
$ mvn spring-boot:run
...
...
***************************
APPLICATION FAILED TO START
***************************
Description:
Configuration property name 'customProperties' is not valid:
Invalid characters: 'P'
Bean: mainConfiguration
Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters and must start with a letter
Action:
Modify 'customProperties' so that it conforms to the canonical names requirements.
如上所示,我們收到一條錯誤消息Modify 'customProperties' 使其符合規範名稱要求。此錯誤消息表明當前用於customProperties
的命名約定不遵循 Spring 設置的命名約定。換句話說,需要更改名稱customProperties
以符合 Spring 中命名屬性的要求。
5.修復錯誤
我們需要更改屬性前綴:
@ConfigurationProperties(prefix = "customProperties")
到烤肉串大小寫前綴:
@ConfigurationProperties(prefix = "custom-properties")
在屬性中,我們可以保留任何樣式,並且我們可以很好地訪問它們。
6.烤肉腸衣的優勢
在訪問這些屬性時使用 kebab 外殼的主要優點是我們可以使用以下任何外殼:
- 駝色外殼像這樣
- 帕斯卡案例像這樣
- snake_case_like_this
- 像這樣的烤肉串
在properties
文件中並使用烤肉串外殼訪問它們。
@ConfigurationProperties(prefix = "custom-properties")
將能夠訪問以下任何屬性
customProperties.name="Baeldung"
CustomProperties.name="Baeldung"
custom_properties.name="Baeldung"
custom-properties.name="Baeldung"
七、結論
在本教程中,我們了解到 Spring Boot 支持多種格式,包括屬性名稱中的駝峰式、蛇式和 kebab 式,但鼓勵我們以 kebab 式大小寫規範地訪問它們,從而減少因命名約定不一致而導致錯誤或混淆的可能性.
與往常一樣,本文的完整代碼可在 GitHub 上獲得。