微信登录

配置文件 - application.yml - YAML 格式配置

Java - Web - Spring 《配置文件 - application.yml - YAML 格式配置》

在 Java Web 开发中,Spring 框架是一个非常流行的选择。而在 Spring 项目里,配置文件起着至关重要的作用,它能帮助我们管理各种环境参数、服务配置等信息。application.yml 是 Spring Boot 项目中常用的一种配置文件,采用 YAML(YAML Ain’t Markup Language)格式,这种格式以简洁易读的特点受到开发者的喜爱。本文将详细介绍 application.yml 的使用方法和技巧。

1. YAML 格式简介

YAML 是一种人类可读的数据序列化格式,它使用缩进和冒号来表示数据的层次结构,用短横线 - 表示列表项。以下是 YAML 格式的一些基本规则:

  • 缩进:使用空格进行缩进,不能使用制表符(Tab),缩进的空格数不重要,只要相同层级的元素左对齐即可。
  • 键值对:使用冒号 : 分隔键和值,键和冒号之间可以有空格。
  • 列表:使用短横线 - 表示列表项,每个列表项独占一行。

2. application.yml 的基本使用

2.1 简单键值对配置

application.yml 中,可以配置一些简单的键值对,例如数据库连接信息:

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://localhost:3306/mydb
  4. username: root
  5. password: 123456
  6. driver-class-name: com.mysql.cj.jdbc.Driver

在这个例子中,spring 是一个顶层键,datasourcespring 的子键,下面又包含了 urlusernamepassworddriver-class-name 等子键。在 Spring 项目中,可以通过 @Value 注解或者 @ConfigurationProperties 注解来获取这些配置值。

2.2 列表配置

如果需要配置一个列表,可以使用 - 来表示列表项,例如配置多个允许的 IP 地址:

  1. allowed-ips:
  2. - 192.168.1.100
  3. - 192.168.1.101
  4. - 192.168.1.102

在 Java 代码中,可以使用 @ConfigurationProperties 注解将这个列表注入到一个 List 类型的属性中:

  1. import org.springframework.boot.context.properties.ConfigurationProperties;
  2. import org.springframework.stereotype.Component;
  3. import java.util.List;
  4. @Component
  5. @ConfigurationProperties(prefix = "allowed-ips")
  6. public class IpConfig {
  7. private List<String> ips;
  8. public List<String> getIps() {
  9. return ips;
  10. }
  11. public void setIps(List<String> ips) {
  12. this.ips = ips;
  13. }
  14. }

2.3 嵌套配置

YAML 格式很适合进行嵌套配置,例如配置多个数据源:

  1. multi-datasources:
  2. primary:
  3. url: jdbc:mysql://localhost:3306/db1
  4. username: root
  5. password: 123456
  6. driver-class-name: com.mysql.cj.jdbc.Driver
  7. secondary:
  8. url: jdbc:mysql://localhost:3306/db2
  9. username: root
  10. password: 123456
  11. driver-class-name: com.mysql.cj.jdbc.Driver

在 Java 代码中,可以定义相应的实体类来映射这些配置:

  1. import org.springframework.boot.context.properties.ConfigurationProperties;
  2. import org.springframework.stereotype.Component;
  3. import java.util.Map;
  4. @Component
  5. @ConfigurationProperties(prefix = "multi-datasources")
  6. public class MultiDatasourceConfig {
  7. private Map<String, DatasourceProperties> datasources;
  8. public Map<String, DatasourceProperties> getDatasources() {
  9. return datasources;
  10. }
  11. public void setDatasources(Map<String, DatasourceProperties> datasources) {
  12. this.datasources = datasources;
  13. }
  14. }
  15. class DatasourceProperties {
  16. private String url;
  17. private String username;
  18. private String password;
  19. private String driverClassName;
  20. // getters and setters
  21. public String getUrl() {
  22. return url;
  23. }
  24. public void setUrl(String url) {
  25. this.url = url;
  26. }
  27. public String getUsername() {
  28. return username;
  29. }
  30. public void setUsername(String username) {
  31. this.username = username;
  32. }
  33. public String getPassword() {
  34. return password;
  35. }
  36. public void setPassword(String password) {
  37. this.password = password;
  38. }
  39. public String getDriverClassName() {
  40. return driverClassName;
  41. }
  42. public void setDriverClassName(String driverClassName) {
  43. this.driverClassName = driverClassName;
  44. }
  45. }

3. 不同环境的配置

在实际开发中,我们通常需要为不同的环境(如开发环境、测试环境、生产环境)配置不同的参数。Spring Boot 支持使用 application-{profile}.yml 文件来实现多环境配置。

3.1 配置不同环境的文件

创建 application-dev.ymlapplication-test.ymlapplication-prod.yml 三个文件,分别用于开发、测试和生产环境。

application-dev.yml

  1. server:
  2. port: 8080

application-test.yml

  1. server:
  2. port: 8081

application-prod.yml

  1. server:
  2. port: 8082

3.2 指定激活的环境

application.yml 中指定要激活的环境:

  1. spring:
  2. profiles:
  3. active: dev

这样,Spring Boot 启动时会加载 application-dev.yml 文件中的配置。

4. 总结

配置类型 YAML 示例 Java 读取方式
简单键值对 key: value @Value("${key}")@ConfigurationProperties
列表 - item1<br>- item2 @ConfigurationProperties 注入 List
嵌套配置 parent:<br> child: value @ConfigurationProperties 映射实体类
多环境配置 application-{profile}.yml application.yml 中指定 spring.profiles.active

通过使用 application.yml 配置文件,我们可以方便地管理 Spring 项目的各种配置信息,提高代码的可维护性和灵活性。希望本文能帮助你更好地掌握 application.yml 的使用。

配置文件 - application.yml - YAML 格式配置