Spring Boot配置文件
Spring Boot 的自动配置方式让配置文件使用起来更加方便,直接配置默认属性就可以完成对其他模块的集成。
从加载顺序来看,bootstrap 文件是优先于 application 文件的。bootstrap 文件是父应用程序上下文加载,用于程序启动的引导工作,并且 bootstrap 文件可以从额外的资源来加载配置信息。
从应用场景来看,bootstrap 文件可以配置一些系统级别的属性,这些属性的特征基本不会变,而 application 文件可以通过环境的不同分成多个文件。这两个文件共用一个环境,为 Spring Boot 应用程序提供配置属性。
可以看到,Spring Boot 的配置文件有 .yml 与 .properties 两种扩展名称。YAML 格式的文件可以更方便地定义层次配置数据,数据结构层次清晰明了,配置简单易读。本文的示例将会采用 YAML 格式的文件来配置数据。
Spring Boot 采用 spring.profiles.active 属性变量来指定具体的配置文件,如 spring.profiles.active=test,应用启动加载的文件是 application-test.yml。
同样,也可以在一个 application.yml 文件中通过 spring.profiles 属性配置不同环境的属性值。示例代码如下:
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
默认配置文件
Spring Boot 默认支持两种配置文件:- bootstrap( .yml 或 .properties 格式)文件。
- application( .yml 或 .properties 格式)文件。
从加载顺序来看,bootstrap 文件是优先于 application 文件的。bootstrap 文件是父应用程序上下文加载,用于程序启动的引导工作,并且 bootstrap 文件可以从额外的资源来加载配置信息。
从应用场景来看,bootstrap 文件可以配置一些系统级别的属性,这些属性的特征基本不会变,而 application 文件可以通过环境的不同分成多个文件。这两个文件共用一个环境,为 Spring Boot 应用程序提供配置属性。
可以看到,Spring Boot 的配置文件有 .yml 与 .properties 两种扩展名称。YAML 格式的文件可以更方便地定义层次配置数据,数据结构层次清晰明了,配置简单易读。本文的示例将会采用 YAML 格式的文件来配置数据。
多环境配置
在进行应用开发时,环境会分为开发环境(dev)、测试环境(test)和线上环境(prod),对应的会有多个配置文件,如 application-dev.yml、application-test.yml 和 application-prod.yml。Spring Boot 采用 spring.profiles.active 属性变量来指定具体的配置文件,如 spring.profiles.active=test,应用启动加载的文件是 application-test.yml。
同样,也可以在一个 application.yml 文件中通过 spring.profiles 属性配置不同环境的属性值。示例代码如下:
server:
address: 192.168.1.100
---
spring:
profiles: dev
server:
address: 127.0.0.1
---
spring:
profiles: prod
server:
address: 192.168.1.120
配置注解
Spring Boot 提供了 @ConfigurationProperties 和 @Value 等注解,可以轻松地获取配置文件的属性值。具体示例代码如下:
my:
servers:
-dev.example.com
-another.example.com
name: www.weixueyuan.net
@Data @Component @ConfigurationProperties(prefix="my") public class ConfigProperties { //值:dev.example.com 、another.example.com private List<String> servers = new ArrayList<String>(); private String name; //值:www.weixueyuan.net }通过 @EnableConfigurationProperties 注解可以引入 ConfigProperties 类。示例代码如下:
@Configuration(proxyBeanMethods = false) @EnableConfigurationProperties(ConfigProperties.class) public class MyConfiguration { }通过 @Validated 注解可以对配置文件中的属性值进行校验。示例代码如下:
@ConfigurationProperties(prefix="my") @Validated public class ConfigProperties { private List<String> servers = new ArrayList<String>(); @NotNull //不为空 private String name; }通过 @Value("${property}") 注解方式可以直接获取单个属性值。示例代码如下:
@component public class ConfigService { @Value("${my.nam}") //www.weixueyuan.net private String name; }Spring Boot 使用 @Configuration 注解完成自动配置,同时也提供了很多 @Conditional 注解,指定在哪些条件下才能自动加载配置,如果不满足条件,则不加载。@Conditional 注解的类型如表2所示。
类 型 | 说 明 |
---|---|
@ConditionalOnClass | 在类路径下有指定的类时加载 |
@ConditionalOnMissingClass | 在类路径下没有指定的类时加载 |
@ConditionalOnBean | 在容器中有指定的Bean时加载 |
@ConditionalOnMissingBean | 在容器中没有指定的Bean时加载 |
@ConditionalOnProperty | 配置文件有某个指定的属性时加载 |
@ConditionalOnResource | 有指定的资源时加载 |
@ConditionalOnWebApplication | 当应用是Web应用时加载 |
@ConditionalOnExpression | 满足某表达式时加载 |
声明:《Java系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。