Spring Boot 外部配置(配置中心化)详解
什么是 Spring Boot 外部配置?
Spring Boot 提供了一种在不同环境下轻松配置应用程序的方法。我们可以将配置信息从代码中分离出来,采用外部化配置。该方法所需的参数可以存储在不同的位置中,如属性文件、YAML 文件、环境变量、数据库或远程配置服务器等,从而达到配置中心化的目的。这样做,可以将配置信息和代码分离,方便多环境部署和维护。
Spring Boot 支持的外部配置文件格式
Spring Boot 支持以下外部化属性配置文件:
- 属性文件(.properties)
- YML 文件(.yml或.yaml)
在默认情况下,Spring Boot 使用 application.properties 文件作为默认的配置文件。如果您同时使用了 application.properties 和 application.yml,则 application.yml 将胜出。
属性文件中的外部化配置
语法
属性文件是键值对的列表。每个键值对都包含一个键和一个值,用等号连接。下面是如何在属性文件中定义外部化配置的语法:
${my.key:default_value}
在以上代码中,${}
语法表示通过外部化值注入属性。冒号 :
表示如果在外部找不到 key,则使用默认值代替。
示例
考虑一个示例,我们将一个名为 my.config
的属性注入到我们的应用程序中。在 application.properties
中添加以下行:
my.config=test
然后,我们在代码中读取这个属性:
@Value("${my.config}")
private String config;
在启动应用程序之后,我们会得到一个名为 config
的 String 类型变量,其值为 "test"。
YML 中的外部化配置
语法
YML 文件使用缩进及冒号来表示层次结构。下面是如何在 YML 文件中定义外部化配置的语法:
my:
key: default_value
在以上代码中,my
是一个集合,其下面有一个名为 key
的键、值对,其值为 default_value
。
示例
和之前的示例一样,我们将一个名为 my.config
的属性注入到我们的应用程序中。在 application.yml
中添加以下行:
my:
config: test
然后,我们在代码中读取这个属性:
@Value("${my.config}")
private String config;
在启动应用程序之后,我们会得到一个名为 config
的 String 类型变量,其值为 "test"。
配置中心化
上面的示例中,我们将配置信息存储在本地属性文件中。但是,如果将配置信息存储在远程配置服务器中会怎样呢?
Spring Cloud Config 提供了这样的功能。使用 Spring Cloud Config,可以将配置信息存储在 Git、Subversion 或 Mercurial 等版本控制系统中。这样做,我们可以对同一应用程序的多个实例进行配置中心化管理。
示范
- 在配置中心的 Git 仓库中创建一个名为
my-service.yml
的配置文件。
my:
config: central
- 创建 Spring Boot 项目并添加以下 Maven 依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
- 在
application.properties
中打开 Spring Cloud Config 客户端,并设置配置服务器地址:
spring.cloud.config.uri=http://config-server:8888
- 在代码中读取配置文件中的外部化配置:
@Value("${my.config}")
private String config;
在启动应用程序之后,我们会得到一个名为 config
的 String 类型变量,其值为 "central"。
结论
本文介绍了 Spring Boot 外部化属性配置的方法,并使用了属性文件、YAML 文件和配置中心化的示例。通过使用配置中心化,我们可以轻松地在不同的环境中管理应用程序配置。
参考链接
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring boot外部配置(配置中心化)详解 - Python技术站