网站终端制作,上海网站建设 网站开发,什邡网站建设,游戏网站制作ConfigurationProperties
ConfigurationProperties 注解是 Spring Boot 中用于将外部配置文件#xff08;如 YAML 或 properties 文件#xff09;中的属性映射到 Java Bean 类属性的强大工具。
以下是关于 ConfigurationProperties 注解与 YAML 配置文件属性匹配规则的详细…ConfigurationProperties
ConfigurationProperties 注解是 Spring Boot 中用于将外部配置文件如 YAML 或 properties 文件中的属性映射到 Java Bean 类属性的强大工具。
以下是关于 ConfigurationProperties 注解与 YAML 配置文件属性匹配规则的详细说明
前缀匹配在 ConfigurationProperties 注解中通过 prefix 属性指定了配置文件中属性的前缀。Spring Boot 会查找所有以该前缀开头的属性并将它们映射到 Java Bean 类的对应属性上。
驼峰命名规则YAML 配置文件中的属性名通常使用短横线分隔单词例如 my-property-name而 Java Bean 类的属性名则遵循驼峰命名规则例如 myPropertyName。Spring Boot 会自动将短横线分隔的属性名转换为驼峰命名并与 Java Bean 类的属性进行匹配。
属性类型转换Spring Boot 会尝试自动将 YAML 配置文件中的属性值转换为 Java Bean 类属性的相应类型。例如如果 YAML 文件中有一个字符串值而 Java Bean 类中的属性是一个 int 类型Spring Boot 会尝试进行类型转换。如果转换失败将会抛出异常。
集合类型匹配当 Java Bean 类的属性是集合类型如 List、Set、Map 等时Spring Boot 会尝试将 YAML 配置文件中的数组或列表语法映射到这些集合类型上。通过在 YAML 文件中使用列表以 - 开头或映射key-value 对语法可以轻松地为集合类型的属性提供配置值。
默认值您可以在 Java Bean 类的属性上设置默认值这样即使 YAML 配置文件中没有指定该属性的值Java Bean 类的属性也会使用这些默认值。此外您还可以在 ConfigurationProperties 注解中指定 ignoreUnknownFields 属性来控制是否忽略配置文件中的未知属性。
下面是一个简单的示例代码演示了如何使用 ConfigurationProperties 注解与 YAML 配置文件进行属性匹配
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;Component
ConfigurationProperties(prefix myapp)
public class MyAppProperties {private String appName;private int port;private ListString servers;// 必须提供 getter 和 setter 方法以便 Spring 能够注入属性值public String getAppName() {return appName;}public void setAppName(String appName) {this.appName appName;}public int getPort() {return port;}public void setPort(int port) {this.port port;}public ListString getServers() {return servers;}public void setServers(ListString servers) {this.servers servers;}
}假设在 application.yml 配置文件中定义了如下属性
myapp:app-name: My Applicationport: 8080servers:- server1- server2- server3通过以上配置Spring Boot 会自动将 myapp.app-name、myapp.port 和 myapp.servers 的值注入到 MyAppProperties 类对应的属性中无需编写任何额外的配置代码。这使得从配置文件中读取属性变得非常简单和直观。
NacosPropertySource
NacosPropertySource 是 Spring Cloud Alibaba Nacos Config 提供的一个注解它允许开发者从 Nacos 配置中心加载配置并将这些配置属性注入到 Spring 容器中。这个注解与 Nacos 配置中心中的配置文件有特定的匹配规则同时它也可以与 ConfigurationProperties 或 Value 注解一起使用以便将配置属性映射到 Java 类中。
Nacos 配置文件命名规则 在 Nacos 配置中心配置文件的命名通常遵循 {dataId}.{group} 的格式。其中dataId 是配置的唯一标识符用于区分不同的配置项group 是配置的分组用于对配置进行逻辑上的分类。
NacosPropertySource 注解使用 在 Spring Boot 应用的启动类或配置类上你可以使用 NacosPropertySource 注解来指定要加载的 Nacos 配置文件的 dataId 和 group。这个注解告诉 Spring Boot 从 Nacos 配置中心加载指定的配置文件并将其内容作为属性源添加到 Spring 环境中。
属性值注入 使用 Value 注解你可以在 Java 类的字段上使用 Value 注解并通过 ${property.name} 的形式来引用 Nacos 配置中的属性。Spring Boot 会自动将这些属性注入到相应的字段中。 使用 ConfigurationProperties 注解对于更复杂的配置如包含多个属性的对象或集合你可以使用 ConfigurationProperties 注解。这个注解允许你将一组相关的配置属性绑定到一个 Java 类上。你需要在类上指定前缀prefixSpring Boot 会根据这个前缀从属性源中匹配对应的属性并自动注入到类的字段中。
示例代码
首先在 Nacos 配置中心创建一个配置文件例如 example.properties内容如下
# example.properties
app.nameMy Application
app.port8080然后在一个配置类中使用 Value 或 ConfigurationProperties 注解将属性值注入到 Java 类中
使用 Value 注解
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;Component
NacosPropertySource(dataId example.properties, autoRefreshed true)
public class MyAppProperties {Value(${app.name})private String appName;Value(${app.port})private int port;// 省略 getter 和 setter 方法
}通过以上配置Spring Boot 应用会从 Nacos 配置中心加载 example.properties 文件的配置并将 app.name 和 app.port 的值注入到相应的 Java 类中。当 Nacos 配置中心中的配置发生变化时如果启用了配置刷新功能通过 RefreshScope应用可以动态地更新这些配置。
注意如果在配置类当中有配置值java类但是配置文件中也有值yml文件或者nacos配置会优先优先使用配置文件当中的值。