springboot2.x基础教程:配置文件详解

当使用Spring Initializr构建springboot项目时,会自动在src/main/resources下生产application.properties文件。今天我们就来聊聊SpringBoot的配置文件。

配置文件的作用

SpringBoot采用“习惯优于配置”的理念,项目中存在大量的配置,采用默认配置,让你无需手动配置。SpringBoot能够识别properties格式与yml格式的配置文件(我们一般使用yml格式更多)。当需要对默认配置进行修改或者自定义配置时可用通过修改配置文件达到目的。

配置文件的基本使用

这是使用yml格式的配置举例,说明application.yml中如何配置,以及代码中如何获取。

数字,字符串,布尔获取

配置文件写法:

version: 1.0
author: codhome.vip
flag: true

使用@Value获取:

@Value("${version}")
float version;
@Value("${author}")
String author;
//这里的true为默认值
@Value("${flag:true}")
boolean flag;

对象、Map写法与获取

配置文件写法:

user:
  userName: codehome
  age: 18
  forbidden: true

使用@ConfigurationProperties获取:

@Configuration
@ConfigurationProperties(prefix = "user")
@Data
public class UserProperties {
    String userName;
    int age;
    boolean forbidden;
}
//注入使用
@Autowired
UserProperties userProperties;

List、Set、Array获取

配置文件写法:

random: 10,20,30

使用@Value获取:

@Value("#{'${random}'.split(',')}")
int[] randoms; //List<Integer>也可以

配置文件写法:

random1:
  users:
    - zhangsao
    - lisi
    - wangwu

使用@ConfigurationProperties获取:

@Configuration
@ConfigurationProperties(prefix = "random1")
@Data
public class UserProperties {
    List<String> users;
}

总结下两种注解区别

springboot2.x基础教程:配置文件详解

多环境配置

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml,使用spring.profiles.active激活使用哪一个配置文件

spring:
  profiles:
    active: dev
---

#配置开发环境
spring:
  profiles: dev
server:
  port: 9000

---

#配置生产环境
spring:
  profiles: prod
server:
  port: 9100

---

#配置测试环境
spring:
  profiles: dev
server:
  port: 8000

配置文件优先级

项目内部配置文件

  1. application.properties 与application.yml同一个目录共存时,properties配置优先级更高
  2. ConfigFileApplicationListener中默认配置文件加载顺序 项目根目录config文件夹>根目录配置文件>resources下cofnig文件夹>resources下配置文件
  3. 当多个配置文件属性不冲突时,配置是互补的springboot2.x基础教程:配置文件详解
  4. 也可以指定配置文件地址
java -jar run-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

外部配置

  1. 操作系统环境变量(比如操作系统的username)
  2. RandomValuePropertySource配置的random.*属性值
  3. jar包外部的application-{profile}.properties配置文件
  4. jar包内部的application-{profile}.properties配置文件
  5. jar包外部的application.properties配置文件(此级别在测试环境经常使用。比如就在jar包同级目录放置一个配置文件,就内覆盖jar包内部所有的配置文件了)
  6. jar包内部的application.properties配置文件,由jar包外向jar包内进行寻找,优先加载待profile的,再加载不带profile的。
  7. @Configuration注解类上的@PropertySource(手动指定导入外部配置文件)
  8. 通过SpringApplication.setDefaultProperties指定的默认属性,自己程序代码里设置,优先级最低

千里之行,始于足下。这里是SpringBoot教程系列第五篇,所有项目源码均可以在我的GitHub[1]上面下载源码。

参考资料

[1]

GitHub: https://github.com/mytianya/springboot-tutorials


原文始发于微信公众号(编程异次元):springboot2.x基础教程:配置文件详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/235339.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!