目录
全局配置文件
application.properties配置文件
application.yaml配置文件
value值为普通数据类型(例如数字、字符串、布尔等)
value值为数组和单列集合
value值为Map集合
value值为对象或嵌套对象
@Value
自定义配置
使用@PropertySource加载配置文件
随机数设置及参数间引用
随机值设置
参数间引用
全局配置文件是能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。
server.port=8080
spring.config.name=peach
spring.application.name=peach-properties
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=xxxx
spring.redis.database=0
演示将application.properties配置文件中的自定义配置属性注入到PropertiesConfig实体类的对应属性中
package com.peach.demo.vo;
import lombok.Data;
/**
* @program: YLT
* @description: 人类
* @author: Mr.peach
* @create: 2023-04-02 23:46
**/
@Data
public class People {
private Integer id;
private String name;
private int age;
}
package com.peach.demo.config;
import com.peach.demo.vo.People;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @program: YLT
* @description: 配置类
* @author: Mr.peach
* @create: 2023-04-02 23:48
**/
@ConfigurationProperties(prefix = "peach-pro")
@Component
@Data
public class PropertiesConfig {
private Integer id;
private String userName;
private List liek;
private String[] family;
private Map map;
private People people;
}
编写application.properties配置文件时,由于要配置的PropertiesConfig对象属性是我们自定义的,Spring Boot无法自动识别,所以不会有任何书写提示。在实际开发中,为了出现代码提示的效果来方便配置,在使用@ConfigurationProperties注解进行配置文件属性值注入时,可以在pom.xml文件中添加一个SpringBoot提供的配置处理器依赖:
org.springframework.boot
spring-boot-configuration-processor
true
重新运行项目启动类或者重新构建可生效
测试配置效果
YAML文件格式是Spring Boot支持的一种JSON超集文件格式,相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml配置文件的工作原理和application.properties是一样的,只不过yaml格式配置文件看起来更简洁一些。我本人开发过程中一般用这种格式,更简洁更有层次感。 YAML文件的扩展名可以使用.yml或者.yaml。 application.yml文件使用“key:(空格)value"格式配置属性,使用缩进控制层级关系。
当YAML配置文件中配置的属性值为数组或单列集合类型时,主要有两种书写方式︰缩进式写法和行内式写法。缩进式有两种写法,行内式写法如下:
注意:application.properties和application.yml如果配置相同属性,application.properties会覆盖application.yml的配置。
支持基本属性的注入,对于包含Map集合、对象以及YAML文件格式的行内式写法的配置文件的属性注入都不支持,如果赋值会出现错误
可以说,几乎所有的配置都可以写在application.peroperties文件中,Spring Boot会自动加载全局配置文件从而免除我们手动加载的烦恼。但是,如果我们自定义配置文件,Spring Boot是无法识别这些配置文件的,此时就需要我们手动加载。
对于这种加载自定义配置文件的需求,可以使用@PropertySource
注解结合@Configuration
注解配置类的方式来实现。@PropertySource注解用于指定自定义配置文件的具体位置和名称。同时,为了保证Spring Boot能够扫描该注解,还需要类上添加@Configuration注解将实体类作为自定义配置类。当然,如果需要将自定义配置文件中的属性值注入到对应类的属性中,可以使用@ConfigurationProperties
或者@Value
注解进行属性值注入
@PropertySource
注解的使用进行相关配置在Spring Boot配置文件中设置属性时,除了可以像前面示例中显示的配置属性值外,还可以使用随机值和参数间引用对属性值进行设置。下面,针对配置文件中这两种属性值的设置方式进行讲解。
在Spring Boot配置文件中,随机值设置使用到了Spring Boot内嵌的RandomValuePropertySource
类,对一些隐秘属性值或者测试用例属性值进行随机值注入。 随机值设置的语法格式为${random.xx},xx表示需要指定生成的随机数类型和范围,它可以生成随机的整数、uuid或字符串,示例代码如下:
# ${random.value} # 配置随机值
# ${random.int} #配置随机整数
# ${random.long} # 配置随机long类型数
# ${random.uuid} # 配置随机uuid类型数
# ${random.int(10)} #配置小于10的随机整数
#${random.int[1024,65536]} # 配置范围在[ 1024,65536]之间的随机整
在Spring Boot配置文件中,配置文件的属性值还可以进行参数间的引用,也就是在后一个配置的属性值中直接引用先前已经定义过的属性,这样可以直接解析其中的属性值了。 使用参数间引用的好处就是,在多个具有相互关联的配置属性中,只需要对其中一处属性预先配置,其他地方都可以引用,省去了后续多处修改的麻烦 参数间引用的语法格式为${xx},xx表示先前在配置文件中已经配置过的属性名