1. 介绍
-
创建工程后默认在
resources下有一个application.properties文件
- 推荐将该文件改为
.yml文件 - 名字默认为
application,不建议修改
- 推荐将该文件改为
-
Spring Boot通常使用两种格式的配置文件-
application.propertiesserver.port=8080 server.servlet.context-path=/api/v1 -
application.ymlserver: port: 8080 servlet: context-path: /api/v1
-
2. 常用配置文件位置
spring boot的配置文件可以在classpath下,也可以在指定的路径下- 加载顺序
- 首先在
classpath:/config/查找配置文件 - 然后在
classpath:下查找配置文件
- 首先在
- 当同级目录下同时有
application.properties和application.yml文件,properties文件的属性会覆盖掉.yml文件的属性
3. 获取自定义属性
-
@Value单值获取-
application.ymluser: username: 老王 age: 18 email: abc@126.com -
JavaBeanimport lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Data @Component public class UserConfig { @Value("${user.username}") private String name; @Value("${user.age}") private Integer age; @Value("${user.email}") private String email; } -
单元测试
import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; @Slf4j @SpringBootTest public class UserConfigTest { @Resource private UserConfig userConfig; @Test public void test() { log.info(userConfig.toString()); } }结果:

之所以转为了
Unicode,是因为老王没有加双引号。

-
注意
user: username: 老王 age: 18 email: abc@126.com address: - 北京 - 上海 - 广州username的这个key不能写成name,不然获取的是电脑用户名- 不能获取复杂类型的值,比如获取
address的值报错
-
-
@ConfigurationProperties批量获取-
application.ymluser: username: "老王" age: 18 email: abc@126.com address: - "北京" - '上海' - "广州" -
JavaBeanimport lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; @Data @ConfigurationProperties("user") @Component public class UserConfig { private String name; private Integer age; private String email; private List<String> address; } -
单元测试
import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; @Slf4j @SpringBootTest public class UserConfigTest { @Resource private UserConfig userConfig; @Test public void test() { log.info(userConfig.toString()); } }结果:

上海用了单引号''依然转为了Unicode。
-
-
注意
@ConfigurationProperties可以获取集合的值单引号''依然会转码,双引号""不会- 要使用
@Component或者@Configuration将JavaBean标记为配置类,配置才会生效
-
@Value以及@ConfigurationProperties对比说明 @ConfigurationProperties @Value 作用 批量获取配置文件中的属性 单值获取 松散绑定(松散语法) 支持 不支持 SpEL 不支持 支持 JSR303数据校验 支持 不支持 复杂类型封装 支持 不支持 - 松散语法
JavaBean中的驼峰命名,在yml中用单词小写跟-连接- 比如
private Strng contextPath在yml中可以对应为context-path,也可以对应驼峰命名法 - 推荐在
yml配置中使用松散语法,用于区分
- 松散语法
4. 多配置文件
- 主配置文件文件名是
application-{profile}.properties/yml,默认使用application.properties的配置,推荐使用yml配置-
在项目的配置文件,可以为了
解耦、生产测试分开配置# 主配置文件 application.yml # druid 配置文件 application-druid.yml # mybatis 配置文件 application-mybatis-plus.yml # 开发环境配置文件 application-dev.yml # 生产环境配置文件 application-prod.yml -
两种方式指定配置文件
-
主配置文件
application.yml中使用spring.profiles.active属性指定spring: profiles: active: dev,druid,mybatis-plus -
项目打包为
jar后,通过命令行参数的方式指定配置文件java -jar app.jar --spring.profiles.active=prod
-
-
本文深入解析SpringBoot配置机制,涵盖配置文件格式、位置、加载顺序、自定义属性获取及多配置文件策略。从.properties到.yml,从@Value到@ConfigurationProperties,全面掌握SpringBoot配置技巧。

被折叠的 条评论
为什么被折叠?



