1、文件类型

1.1、properties

同以前的properties用法

1.2、yaml

1.2.1、简介

YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

非常适合用来做以数据为中心的配置文件

1.2.2、基本语法

  • key: value;kv之间有空格
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义

1.2.3、数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null
key: value
  • 对象:键值对的集合。map、hash、set、object
行内写法:  k: {k1:v1,k2:v2,k3:v3}
#或
k: k1: v1k2: v2k3: v3
  • 数组:array、list、queue
行内写法:  k: [v1,v2,v3]
#或者
k:- v1- v2- v3

1.2.4、示例

//Person类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//优先在properties文件中进行扫描,扫描完毕后扫描yml文件,如果properties文件中已经配置了的属性在yml文件中不会扫描,即properties文件优先级高于yml文件
@ConfigurationProperties(prefix = "person")
public class Person {private String userName;private Boolean boss;private Date birth;private Integer age;private Pet pet;private String[] interests;private List<String> animal;private Map<String, Object> score;private Set<Double> salary;private Map<String, List<Pet>> allPets;}
//Pet类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Pet {private String name;private Double weight;
}

对应的yml(yaml)配置文件

Person:userName: xiaomingboss: falsebirth: 2022/5/10age: 18Pet:name: xiaohuangweight: 99.99interests:- 篮球- 足球
#  interests:[篮球,足球]animal: [tiger,bear,bee]score:math: 90english: 88computer: 100salary:- 19999- 29999- 39999allpets:sick:- {name: tomcat}- {name: mouse,weight: 66}height:- {name: bird,weight: 30}- {name: dog,weight: 78}
#   height:[{name: bird,weight: 30},{name: dog,weight: 78}]
{"userName":"xiaoming","boss":false,"birth":"2022-05-09T16:00:00.000+00:00","age":18,"pet":{"name":"xiaohuang","weight":99.99},"interests":["篮球","足球"],"animal":["tiger","bear","bee"],"score":{"math":90,"english":88,"computer":100},"salary":[19999.0,29999.0,39999.0],"allPets":{"sick":[{"name":"tomcat","weight":null},{"name":"mouse","weight":66.0}],"height":[{"name":"bird","weight":30.0},{"name":"dog","weight":78.0}]}}

出现问题:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
//表示数据库连接配置出现问题,因为我们在建立项目的时候选择mybatis,但是我们没有配置相应的连接属性,报错

解决方案:

  1. 将相应的依赖进行注释掉
  2. 将启动类的@SpringBootApplication修改为@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})就可以启动的时候不需要连接数据库。

1.3、JSR3数据校验

1.3.1、导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.6.6</version>
</dependency>

1.3.2、添加注解

相关注解使用:https://www.jianshu.com/p/554533f88370

首先要在实体类使用@Validataed注解,在对应的属性使用相应的注解@Eamil标识该属性只能接受邮箱格式的地址,否则按照message报错

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {private String userName;private Boolean boss;private Date birth;@Email(message = "邮箱格式错误")private String email;private Integer age;private Pet pet;private String[] interests;private List<String> animal;private Map<String, Object> score;private Set<Double> salary;private Map<String, List<Pet>> allPets;}email: 2532532

2、配置提示

在pom.xml导入下面的依赖,在编写yml配置文件的时候就有提示功能

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

为了防止将这种功能的jar包也进行打包,我们在pom.xml中添加下列代码可以防止将上述jar包打包

<configuration><excludes><exclude><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId></exclude></excludes>
</configuration>

3、多环境切换

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境;

3.1、多配置文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;

例如:

application-test.properties 代表测试环境配置

application-dev.properties 代表开发环境配置

但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件

我们需要通过一个配置来选择需要激活的环境:

#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring:profiles:active: dev

3.1、yaml的多文档块

和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,更加方便了 !

#多种配置中间用---隔开,使用spring:profiles:active来指定使用某个配置server:port: 8081spring:profiles:active: dev---
server:port: 8082
spring:profiles: dev---
server:port: 8083
spring:profiles: test

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!

3.3、配置文件加载位置

外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!

官方外部配置文件说明参考文档

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:

优先级
1:项目路径下的config文件夹配置文件优先级
2:项目路径下配置文件优先级
3:资源路径下的config文件夹配置文件优先级
4:资源路径下配置文件
优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

我们在最低级的配置文件中设置一个项目访问路径的配置来测试互补问题;

#配置项目的访问路径
server.servlet.context-path=/xxx

SpringBoot-配置文件相关推荐

  1. SpringBoot配置文件YAML配置注入(详解)

    目录 一.SpringBoot配置文件 1. SpringBoot默认配置文件 2. 配置文件的作用 3. 配置文件的位置 4. 多环境切换 方式一:多配置文件 方式二:一个配置文件(yaml的多文档 ...

  2. 如何保护 SpringBoot 配置文件中的敏感信息

    今日推荐 Java 8 一行代码解决了空指针问题,太厉害了...List中remove()方法的陷阱,被坑惨了!25000 字详解 23 种设计模式,原来可以这么简单!最牛逼的 Java 日志框架,性 ...

  3. springboot配置文件加载顺序

    1.同一目录下,properties配置优先级 > YAML配置优先级. 2.SpringBoot配置文件可以放置在多种路径下,不同路径下的配置优先级有所不同.可放置目录(优先级从高到低) fi ...

  4. redismanager 获取不到yml中的密码_SpringBoot敏感信息加密,springboot配置文件密码加密jasypt...

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  5. apache 配置文件内使用 8080 端口_【SpringBoot 框架】- SpringBoot 配置文件

    一.SpringBoot配置文件类型 SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话 ,就可以自己编写配置文件进行相应配置,起步依赖spring-bo ...

  6. SpringBoot 配置文件bootstrap和application的区别

    目录 一.SpringBoot配置文件 二.bootstrap和application区别 三.bootstrap和application的应用场景 一.SpringBoot配置文件 bootstra ...

  7. SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  8. SpringBoot - 配置文件加载位置与优先级

    SpringBoot - 配置文件加载位置与优先级 [1]项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者application.yml文 ...

  9. springboot 配置文件的所有属性

    springboot 配置文件的所有属性 # ---------------------------------------- # 核心属性 # --------------------------- ...

  10. SpringBoot配置文件中spring.profiles.active配置详解

    SpringBoot配置文件中spring.profiles.active配置详解 1.多环境配置 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测 ...

最新文章

  1. 微信小程序万里目_微信小程序学习用推荐:破音万里:音频播放,音乐列表
  2. C语言中的sizeof中的数组和指针
  3. ubuntu中wifi显示被硬件禁用的解决方法
  4. Jupyterlab 插件安装后侧边栏找不到的解决
  5. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
  6. HYSBZ - 2157树链剖分
  7. list 分组求和_数据分析-python-分组聚合-2
  8. 人声处理_科唛课堂——人声的音频后期处理
  9. 安卓系统组态软件_第六代组态软件夸平台支持苹果安卓手机APP智能控制PLC
  10. 车型代号对照表_车型代号对照表2015Q3
  11. 软件设计 基础篇(一) 开发文档
  12. MATLAB 神经网络NAR时间序列做预测
  13. Python的简单介绍
  14. 什么是固定资产管理系统?固定资产管理小程序有哪些功能?
  15. 错误“a label can only be part of a statement and a declaration is not a statement”解决方法
  16. 要不要试试 FBI 出品的健身APP,绝对不收集信息
  17. create和qypt qt_pyqt 与 qt c++ 开发windows客户端程序区别
  18. JJJ:配置ubuntu虚拟机网络
  19. 分数类中的运算符重载(续)
  20. Linux is内存管理,【原创】(七)Linux内存管理

热门文章

  1. 工作流管理系统开发之六 表单权限与流程的权限控制
  2. 已解决Auto-GPT本地部署正确设置谷歌Google浏览器配置
  3. 【线性代数】MIT Linear Algebra Lecture 6: Column space and nullspace
  4. android端获取Tomcat服务器端json数据并通过listview显示
  5. excel中怎么快速录入身份证号码?
  6. 各大网站CSS初始化代码集合
  7. 攻防世界-unseping
  8. 苹果宣布iOS切分为二独立出iPadOS操作系统
  9. CS:APP3e 深入理解计算机系统_3e Attacklab 实验
  10. 本地白嫖AI绘画 ,Stable Diffusion 初探!