Spring Boot的配置文件
2021/7/15 23:41:50
本文主要是介绍Spring Boot的配置文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- Spring Boot 配置文件
- 一、yaml 语法
- 1.1 基本语法
- 1.2 值类型
- 1.2.1 字面量(数字、字符串、布尔)
- 1.2.2 对象或Map
- 1.2.3 数组
- 1.2.4 复合值
- 1.2.5 参数引用
- 二、配置文件属性读取
- 2.1 使用 `@Value` 读取
- 2.2 使用 `org.springframework.core.env.Environment` 对象读取
- 2.3 使用 @ConfigurationProperties 读取
- 三、profile
- 3.1 多 profile 文件配置
- 3.2 yml 多文档
- 3.3 profile 激活方式
- 四、配置文件加载顺序
Spring Boot 配置文件
-
Spring Boot 的配置文件分为
properties
与yaml
两种形式且必须命名为application
。 -
Spring Boot 的配置文件通常放置于
src/main/resources
文件夹下。
properties
与 yaml
简单对比:
properties | yaml | |
---|---|---|
语法结构 | key=value | key: value(注意冒号后面需要空格) |
文件后缀名 | .properties | .yaml 或.yml |
级联属性 | #用点连接 server.port=9090 | # 分层 server: port: 9090 |
一、yaml 语法
1.1 基本语法
# 注释文本 [key]:[空格][value] # 使用缩进表示层级关系,同层级必须左对齐,缩进空格数不重要,一般使用两个空格 [key1]: [空格][空格][key2]:[空格][value]
- 大小写敏感。
- 数据值前面必须有一个空格作为分隔符。
- 使用缩进表示层级关系,同层级的元素必须左侧对齐。
#
开头表示注释。
spring: redis: host: localhost port: 6379
1.2 值类型
1.2.1 字面量(数字、字符串、布尔)
可以直接书写,不需要加引号,如下:
student: name: Jacks age: 20 man: true
- 字符串默认情况不用加引号,单引号与双引号包裹的字符串含义不同
- 单引号(‘字符串’):忽略转义字符。
- 双引号(“字符串”):识别转义字符。
1.2.2 对象或Map
# 写法一 student: name: Jacks age: 20 man: true # 写法二 student: {name: Jacks, age: 20}
1.2.3 数组
# 写法一 fruit: - apple - orange - banana # 写法二 fruit: [apple,orange,banana]
- 用
- 值
的形式表示数组中的一个元素。 - 用
[]
包裹且用,
隔开每一个元素。
1.2.4 复合值
- 复合结构是前三种形式的组合。
yaml: value: # 字面量写法 str: 字符串,默认不\n需要加引号,不会转义特殊字符。 str2: '单引号包裹的字符串不识别转义字符\n,与不加引号效果一样' str3: "双引号包裹的字符串会识别转义字符\n" num: 666 dNum: 666.88 birth: 2020/10/27 12:23:34 # 集合写法 array、list、set 写法,两种方式都可以 list: - hello - world - 你好 - 世界 set: [ hello,world,你好,世界 ] # 对象/map map: { name: jacks,age: 22,gender: man} # 对象数组 students: - {name: 张三, age: 18} - {name: 李四, age: 19}
1.2.5 参数引用
age: 20 # 可以使用 ${} 引用配置文件中的其他项的值 student: age: ${age}
二、配置文件属性读取
- 配置文件
student: name: 张三 age: 20 address: - 北京 - 上海 - 深圳 - 广州
2.1 使用 @Value
读取
@RestController public class YmlController { // 获取属性值,${}中匹配配置文件中的 key @Value("${student.name}") private String username; @Value("${student.age}") private int age; // 获取数组 @Value("${address[0]}") private String address; @GetMapping("hello") public String hello() { System.out.println(username); System.out.println(age); System.out.println(address); return "访问成功:hello"; }
2.2 使用 org.springframework.core.env.Environment
对象读取
@RestController public class YmlController { @Autowired Environment environment; @GetMapping("/env") public String getEnv() { String name = environment.getProperty("student.name"); String age = environment.getProperty("student.age"); String address = environment.getProperty("address[0]"); System.out.println(name); System.out.println(age); System.out.println(address); return "访问成功:hello"; } }
2.3 使用 @ConfigurationProperties 读取
@ConfigurationProperties
注解主要用于将实体类对象与配置文件进行绑定,为实体对象注入属性。
- 首先添加以下依赖,编写配置文件时可以获取智能提示,并且在编译后会根据实体类属性生产JSON文件。
<!-- 让实体类在配置文件中有对应的提示 --> <!-- 对实体类的属性生成 json 文件,存在于 target/classes/META-INF --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
- 建立实体类
@Data // lombok,提供 getter 、 setter 等方法 @Component // 注入到容器,交由 spring 管理 @ConfigurationProperties("person") // 使用时需要指定前缀 public class Person { private String name; private String age; private List<String> hobby; }
- 书写配置文件
person: name: jacks age: 23 hobby: - 编程 - 游戏 - 动漫
- 测试使用
@RestController public class YmlController { @Autowired Person person; @GetMapping("person") public Person student() { return person; } }
三、profile
开发时 Spring Boot 应用时,通常会有开发环境、测试环境和生产环境等不同环境,其数据库地址,服务器端口等等配置都会有差别,为了避免每次打包部署都需要修改配置项,所以提供了 profile 功能来动态切换配置环境。
3.1 多 profile 文件配置
分别创建三个配置文件:
- 测试环境配置文件:
application-test.yml
- 开发环境配置文件:
application-dev.yml
- 生产环境配置文件:
application-pro.yml
需要注意的是,前面的 application
名字是固定的,后面的 -xxx
是自定义的。
激活配置文件,在 application.yml
文件中如下配置:
# 表示激活 application-dev 配置文件,要激活哪个文件,需要匹配后面的 application-xxx.yml 中的xxx spring: profiles: active: dev
3.2 yml 多文档
# 激活 spring: profiles: active: pro --- # 标识为 default 的配置文件 spring: profiles: default server: port: 8081 --- # 标识为 dev 的配置文件 spring: profiles: dev server: port: 8082 --- # 标识为 test 的配置文件 spring: profiles: test server: port: 8083 --- # 标识为 pro 的配置文件 spring: profiles: pro server: port: 8084
- 单文件中用
---
分割上下,形成多个文件块。 - 每个文件块中可以使用
spring.profiles
指定每块文件的名字。 - 通过
spring.profiles.active
指定激活哪些文件块。
3.3 profile 激活方式
- 配置文件
spring: profiles: active: dev
-
虚拟机参数(VM optionsdd):
-Dspring.profiles.active=test
-
命令行参数:
--spring.profiles.active=pro
四、配置文件加载顺序
能被 Spring Boot 应用扫描到的路径优先级从高到低排序:
- 项目(jar包)同级目录下的 config 目录:
file:./config/
- 项目(jar包)同级目录:
file:./
- 类路径下的config目录:
classpath:/config/
- 类路径下的根目录:
classpath:/
所有文件都能被加载,高优先级的配置文件会覆盖低优先级配置文件的内容。
这篇关于Spring Boot的配置文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用