大佬用1000字就把SpringBoot的配置文件讲的明明白白!

SpringBoot的自动配置方式让配置文件使用起来更加方便,直接配置默认属性就可以完成对其他模块的集成。

默认配置文件

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和applicationprod.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

上面的这个例子中,如果dev配置被指定,则server.address的属性值为127.0.0.1。同样,如果prod配置被指定,则server.address的属性值为192.168.1.120。如果dev和prod配置都没有被指定,则server.address的属性值为192.168.1.100。

配置注解

Spring Boot提供了@ConfigurationProperties和@Value等注解,可以轻松地获取配置文件的属性值。具体示例代码如下:

my:

servers:

-dev.example.com

-another.example.com

name: zhangsan

上面是一个YAML格式的配置文件,可以通过@ConfigurationProperties注解获取配置的属性值。示例代码如下:

@Data

@Component

@ConfigurationProperties(prefix="my")

public class ConfigProperties {

//值:dev.example.com 、another.example.com

private List<String> servers = new ArrayList<String>();

private String name;

//值:zhangsan

}

通过@
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}") //zhangsan

private String name;

}

Spring Boot使用@Configuration注解完成自动配置,同时也提供了很多@Conditional注解,指定在哪些条件下才能自动加载配置,如果不满足条件,则不加载。@Conditional注解的类型如表3.2所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值