当前位置: 首页 > news >正文

全局配置文件

Spring Boot默认使用的全局配置文件有application.properties和application.yml,Spring Boot启动时会自动读取这两个文件中的配置,如果文件中存在与默认自动配置相同的配置信息,则覆盖默认的配置信息。

application.properties配置文件

application.properties文件中可以定义Spring Boot项目的相关属性,属性可采用键值对格式进行设置,表示形式为“Key=Value”,这些相关属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义的属性。例如:

address=beijing
server.port=80
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果需要配置的属性为对象的属性,可以通过“对象名.属性名”的方式指定属性的键。 

user.username=lisi
user.age=18

application.properties文件中的属性支持多种类型,常见的有字面量、数组和集合。 

字面量类型属性 

字面量是指单个的不可拆分的值,例如:数字、字符串、布尔值等。

在默认情况下字符串是不需要使用单引号或双引号进行修饰的。 

address=beijing
age=13

数组类型属性

配置数组类型属性时,可以将数组元素的值写在一行内,元素值之间使用逗号(,)间隔,也可以在多行分别根据索引赋值。

# 方式一
user.hobby=swim,travel,cook
# 方式二
user.hobby[0]=swim2
user.hobby[1]=travel2
user.hobby[2]=cook2

集合类型属性

List

# 配置List:方式一
user.subject=Chinese,English,Math
# 配置List:方式二
user.subject[0]=Chinese
user.subject[1]=English
user.subject[2]=Math

Set

# 配置Set
user.salary=120,230

Map

# 配置Map方式一
user.order.1001=cookie
user.order.1002=cake
# 配置Map方式二
user.order[1001]=cookie
user.order[1002]=cake

Spring Boot提供的属性及它们的默认值

使用application.properties

1.使用springbootstarter创建项目,选择web依赖

2.创建子包domain,在该包下创建类Pet和Person

public class Pet {private String type;private String name;//无参构造方法//getter 、setter//toString补上}
@Component// 用于将Person类作为Bean注入到Spring容器中
@ConfigurationProperties(prefix = "person") // 将配置文件中以person开头的属性注入到该类中
public class Person {private int id;            //idprivate String name;      //名称private List hobby;       //爱好private String[] family; //家庭成员private Map map;private Pet pet;          //宠物//无参构造方法//getter 、setter//toString补上
}

3.在配置文件中自动提示属性

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

更新工程:在项目上右键 maven-->update project...

target/classes/META-INF 下会生成文件 spring-configuration-metadata.json。

4. application.properties中自定义属性

##对实体类对象Person进行属性配置
person.id=1
person.name=tom
person.hobby=play,read,sleep
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=kity

5.查看配置效果

@SpringBootTest
class Chapter02ApplicationTests {@Autowiredprivate Person person;@Testvoid contextLoads() {System.out.println(person);}
}

application.yml 配置文件

概念

YAML文件格式是Spring Boot支持的一种JSON超集文件格式。

application.yml配置文件是使用 YAML编写的文件,YAML是”YAML Ain't Markup Language“的递归缩写。YAML通常用于表示数据结构和配置信息,它使用缩进和外观依赖的方式表示层级关系,使得配置文件和数据结构的表达相对简洁和易于阅读。

YAML支持的数据包括列表、键值对和字符串、数字等。

YAML文件的后缀名为.yml或.yaml,编写时需要遵循如下规则。

        使用缩进表示层级关系。

        缩进时不允许使用Tab 键,只允许使用空格。

        缩进的空格数不重要,但同级元素必须左侧对齐。

        大小写敏感。

语法

key:(空格)value,使用缩进控制层级关系

如果需要配置的属性为对象的属性,配置的方式有缩进式和行内式两种。

# 缩进式
consumer:username: lisiage: 18
# 行内式
consumer: {username: lisi,age: 18}

字面量类型属性

默认情况下字符串是不需要使用单引号或双引号的。 

server:port:  8081path:  /hello

数组类型和单列集合属性

person:hobby:  [play,read,sleep]
consumer:hobby:- play- read- sleep

Map集合或对象

person:map: {k1: v1,k2: v2}
consumer:order:1001: cookie1002: cake

配置文件存放位置和优先级

Spring Boot 启动时会扫描以下5个位置的application.properties和application.yml文件,并将扫描到的文件作为Spring Boot 的默认配置文件。  

file:./config/*/  

file:./config/

file:./

classpath:/config/  

classpath:/

上述5个位置下如果都存在application.properties和application.yml文件,在项目启动时都会被加载。加载多个application.properties或application.yml文件时,文件中的配置会根据文件所处的位置划分优先级,优先级规则如下。

上述位置1~位置5的优先级依次降低,序号越小优先级越高。

位于相同位置的application.properties的优先级高于application.yml,application.yml的优先级高于application.yaml。

存在相同的配置内容时,高优先级的内容会覆盖低优先级的内容。

存在不同的配置内容时,高优先级和低优先级的配置内容取并集。

相关文章:

  • 如何确保低空经济中的数据安全?
  • Flink概述
  • 排序复习/下(C语言版)
  • Scala语言基础与函数式编程详解
  • Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器配置版本-v5.2.3-beta+charts图表
  • Web 技术与 Nginx 网站环境部署
  • 大数据hadoop小文件处理方案
  • CRMEB多商户预约服务上门师傅端
  • 可编辑98页PPT | 某大型制造业数字化转型战略规划项目方案
  • 使用PowerShell备份和还原Windows环境变量
  • vue2.0 组件生命周期
  • MYSQL故障排查和环境优化
  • 学习黑客 PowerShell 详解
  • 远程医疗结合贴肤芯片技术对体育院校学生提升运动表现的路径分析
  • 详解Oracle HASH CHAIN和HASH BUCKET
  • PostgreSQL基本用法
  • 数据分析入门指南:从历史到实践
  • Linux详解基本指令(一)
  • HttpMessageConverter 的作用是什么? 它是如何实现请求体到对象、对象到响应体的自动转换的(特别是 JSON/XML)?
  • # YOLOv4:目标检测的全新突破
  • 一日双赛“莎头组合”赢得强势,但国乒已开始品尝输球滋味
  • 中国戏剧梅花奖终评结果公示,蓝天、朱洁静等15名演员入选
  • 去年上海60岁及以上户籍老年人口占总人口的37.6%
  • 著名文学评论家、原伊犁师范学院院长吴孝成逝世
  • 牛市早报|上市公司重大资产重组新规出炉,4月经济数据将公布
  • 以色列总理:以哈谈判内容包括“结束战争的框架”