SpringBoot(二):配置文件的作用、配置文件的格式、properties配置文件、yml配置文件

news/2024/10/30 23:22:14/

目录

  • 一、配置文件的作用
  • 二、配置文件的格式
  • 三、properties配置文件
    • 3.1 properties的基本语法
    • 3.2 properties的缺点
    • 3.3 配置自定义内容
    • 3.4 读取配置文件
  • 四、yml配置文件
    • 4.1 yml基本介绍
    • 4.2 yml基本语法
    • 4.3 使用yml配置不同的数据类型
    • 4.4 读取yml配置文件
    • 4.5 在yml中配置对象
    • 4.6 在yml中配置集合
    • 4.7 properties和yml对比
  • 五、多平台的配置文件设置

一、配置文件的作用

在整个项目中所有重要的数据都是在配置文件中配置的,比如:

  • 数据库的连接信息(包含用户名和密码)
  • 项目的启动端口
  • 第三方系统的调用密钥等信息
  • 配置日志的等级

二、配置文件的格式

SpringBoot 配置文件主要分一下两种格式:.properties和.yml格式

在这里插入图片描述
【properties和yml】

  • properties 可以和 yml ⼀起存在于⼀个项目当中,当 properties 和 yml ⼀起存在⼀个项目中时,如果配置文件中出现了同样的配置,比如 properties 和 yml 中都配置了“server.port”,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties ⽂件之后,也会加载 .yml 文件的配置信息。
  • properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置文件格式,这样可以更好的维护(降低故障率)

注意:配置文件的名字一定是application

三、properties配置文件

3.1 properties的基本语法

properties是以键值对的形式配置的,key和value之间使用"="连接
在这里插入图片描述

3.2 properties的缺点

在这里插入图片描述
yml格式很好的解决了这个问题

3.3 配置自定义内容

在properties中除了可以配置系统的参数外,还可以配置用户自定义的内容
在这里插入图片描述

3.4 读取配置文件

如果想在项目中读取配置文件的内容,可以通过@Value注解来读取

package com.example.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ReadPropertis {@Value("${server.port}") //格式一定是 ${key}的形式private int port;   //不仅可以读取系统的配置信息,也可以读取用户自定义的配置信息  @RequestMapping("/hi")public String  displayPort(){return "port:"+port;}
}

在这里插入图片描述

四、yml配置文件

4.1 yml基本介绍

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另⼀种标记语言”。

【yml的优点】

  • yml可读性高、写法简单、易于理解、语法和json相似
  • yml支持更多的数据类型,支持配置数组、散列表、标量等。: 和value 之间一定要使用空格空开
  • yml支持更多编程语言,包括Java、Golang、PHP、Ruby等

4.2 yml基本语法

yml 是树形结构的配置文件,它的基础语法是“key: value”,注意 key 和 value 之间使用英文冒汗加空格的方式组成的,其中的空格不可省略
在这里插入图片描述

【使用yml连接数据库的写法】
在这里插入图片描述

【yml的配置多级目录的规则】
在这里插入图片描述

4.3 使用yml配置不同的数据类型

在这里插入图片描述

4.4 读取yml配置文件

yml 读取配置的方式和 properties 相同,使⽤ @Value 注解即可

【注意事项】
配置文件中内容:
在这里插入图片描述
读取配置文件的结果:

在这里插入图片描述
结论:

  • 什么都不加和加了单引号中的转义字符原样输出
  • 双引号中的转义字符会发挥出其语义,例如\n,就会产生换行效果

4.5 在yml中配置对象

student:id: 1name: Javaage: 18

另一种行内写法:和上面写法等价

student2: {id: 1,name: wp,age: 19}

@Value只能用来读取属性,而不能读取整个对象,要想读取整个对象需要使用@ConfigurationProperties注解:
首先要创建一个student类

package com.example.demo;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@ConfigurationProperties(prefix = "student2") //将配置文件中的student2配置赋值给当前对象
@Component
public class Student {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

使用student对象

    @Autowired()private Student student;@PostConstructpublic void postConstruct() {System.out.println(student.getName());System.out.println(student.getAge());}

执行结果:
在这里插入图片描述

注意:以上代码中的 getter 和 setter 方法不能省略,因为ConfigurationProperties注解在实现时是通过set方法给属性赋值的

4.6 在yml中配置集合

dbtypes:list:- mysql- db2- oracle

行内写法:

dbtypes2: {list: [mysql,db2,sqlserver]}

读取集合:

package com.example.demo;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.ArrayList;
import java.util.List;@Component
@ConfigurationProperties(prefix = "dbtypes")
@Data   //生成setter和getter方法
public class Config {private List<String> list; //此处的变量名必须和配置文件中的配置的集合名字相同
}
@Autowiredprivate Config config;@PostConstructpublic void postConstruct() {System.out.println(config.getList().get(0));System.out.println(config.getList().get(1));System.out.println(config.getList().get(2));}

在这里插入图片描述
注意:

在这里插入图片描述

4.7 properties和yml对比

  • properties以key=value的形式配置键值类型的配置文件,yml使用的是类似json格式配置信息,层级之间使用换行缩进的方式区分,key和value之间使用: 和 空格 隔开
  • properties为早期的默认配置文件格式,写法形式会造成代码冗余度过高,yml没有这个问题
  • yml支持配置更多的数据类型
  • yml通用性更好,支持更多的语言

五、多平台的配置文件设置

对于某个软件来说,通常会有三个环境的配置文件:

  1. 开发环境配置文件
  2. 生成环境配置文件
  3. 测试环境配置文件

也就是说当软件处于不同的环境时,应搭配对应的配置文件,因此我们不能每切换一次环境都去修改配置环境,这是不现实也是非常麻烦的,合理的做法是下面这样:

  1. 创建不同环境的配置文件:
  • application-dev.yml
  • application-pro.yml
  • application-test.yml
  1. 在application.yml中设置运行环境
spring:profiles:active: dev

http://www.ppmy.cn/news/21394.html

相关文章

【Linux】git的使用

文章目录&#x1f3aa; Linux下git的使用&#x1f680;1.git三板斧⭐1.1 准备工作⭐1.2 git add⭐1.3 git commit⭐1.4 git push⭐1.5 筛选提交&#x1f680;2.git分区⭐2.1 工作区⭐2.2 暂存区⭐2.3 版本区&#x1f680;3.git分支管理⭐3.1 分支创建与切换⭐3.2 分支合并⭐3.3…

Dubbo SPI 源码分析

上一章&#xff0c;我简单演示了 Dubbo SPI 的使用方法。我们首先通过 ExtensionLoader 的 getExtensionLoader 方法获取一个 ExtensionLoader 实例&#xff0c;然后再通过 ExtensionLoader 的 getExtension 方法获取拓展类对象。这其中&#xff0c;getExtensionLoader 用于从缓…

【每日CSS3代码】

1-1 两栏布局【1/27】 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

数学建模与数据分析 || 3. 面向数据的特征提取方法: 探索性数据分析

面向数据的特征提取方法: 探索性数据分析 文章目录面向数据的特征提取方法: 探索性数据分析1. 原始数据的准备1.1 导入 python 模块1.2 导入数据集并进行宏观认识1.3 数据集描述2. 数据的预处理2.1 缺失数据的甄别2.2 类别规模的评估3. 数据特征的处理3.1 第一个因变量- 分析范…

我们为什么要学习servlet? servlet是干嘛的?

最近刚刚学习完servlet&#xff0c;明白了一个事情&#xff0c;servlet是用来干嘛的&#xff0c;为什么要学习servlet&#xff0c;我想如果我在刚刚开始学习servlet时就明白这件事的话&#xff0c;会更加有利于我带有目的的去学习servlet&#xff1b;所以记录以下文章&#xff…

一些关于Linux内核中的结构体函数指针的理解

一些关于Linux内核中常用的结构体函数指针的理解 动机 在看linux内核代码的时候经常能够看到一些结构体里面的成员跟我们以往见的到一些结构体不一样&#xff0c;常见的架构体如下面的代码&#xff1a; struct a{int i;char b;struct c; };而内核中又见有这样的一些结构体&a…

【MyBatis】| MyBatis查询语句专题(核心知识)

目录 一&#xff1a;MyBatis查询语句专题 1. 返回Car对象 2. 返回List<Car> 3. 返回Map 4. 返回List<Map> 5. 返回Map<String,Map> 6. resultMap结果映射 7. 返回总记录条数 一&#xff1a;MyBatis查询语句专题 前期准备&#xff1a; 模块名&#xf…

springboot+mongodb初体验

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 1、mongodb服务…