一、什麼是@ConfigurationProperties註解
@ConfigurationProperties註解是Spring Boot提供的一種綁定自定義屬性的方式。使用該註解可以將屬性文件中的屬性值綁定到Java對象上,從而方便的使用這些屬性值。
在Spring Boot中,通常有兩種類型的屬性文件:application.properties和application.yml。通過@ConfigurationProperties註解可以將屬性文件中的屬性值綁定到Java Bean上,然後使用該Bean來讀取屬性值。
二、如何使用@ConfigurationProperties註解
使用@ConfigurationProperties註解綁定屬性值的過程非常簡單,只需要在Java Bean中添加@ConfigurationProperties註解,並指定屬性文件中屬性的前綴即可。
@ConfigurationProperties(prefix = "example") public class ExampleProperties { private String name; private String description; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
在上面的示例中,@ConfigurationProperties註解的prefix屬性值為「example」,因此Bean中的屬性就會自動綁定以「example.」開頭的屬性值。
另外,在使用@ConfigurationProperties註解時還需要加入@Component或@Configuration註解,讓Spring Boot能夠掃描該Bean並創建相應的實例。
三、綁定屬性值的方式
在@ConfigurationProperties註解中,可以通過以下幾種方式來綁定屬性值:
1、直接綁定
直接將屬性值綁定到Java Bean的屬性上。
@ConfigurationProperties(prefix = "example") public class ExampleProperties { private String name; private String description; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
2、使用@Value註解綁定
使用@Value註解將屬性值綁定到Java Bean的屬性上。
@ConfigurationProperties(prefix = "example") public class ExampleProperties { @Value("${example.name}") private String name; @Value("${example.description}") private String description; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
3、使用Constructor Binding綁定
使用Constructor Binding將屬性值綁定到Java Bean的構造函數入參中。
@ConfigurationProperties(prefix = "example") public class ExampleProperties { private String name; private String description; public ExampleProperties(String name, String description) { this.name = name; this.description = description; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
在使用Constructor Binding時,需要添加一個帶有@Configuration的配置類,並在該類中使用@ConfigurationPropertiesScan註解指定要掃描的Java Bean。
@Configuration @ConfigurationPropertiesScan(basePackageClasses = ExampleProperties.class) public class ExampleConfiguration { }
四、屬性值校驗
在@ConfigurationProperties中,可以使用JSR-303 Bean Validation機制對屬性值進行校驗。
@ConfigurationProperties(prefix = "example") public class ExampleProperties { @NotEmpty private String name; @NotBlank private String description; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
在上面的示例中,使用了@NotEmpty和@NotBlank註解對屬性值進行了校驗,如果值為空則會拋出異常。
五、總結
本文詳細介紹了如何使用@ConfigurationProperties註解綁定屬性值,並且圍繞該註解展開了多個方面的講解,包括如何使用三種不同方式綁定屬性值以及如何進行屬性值校驗等。通過學習本文,讀者不僅了解了@ConfigurationProperties註解的使用方法,更可以通過該註解快速、方便地管理應用程序中的屬性值。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297628.html