【SpringBoot 配置文件】

SpringBoot 配置文件

文章目录

  • [SpringBoot 配置文件](#SpringBoot 配置文件)
  • 一、配置文件作用
    • [1.1 SpringBoot 配置文件](#1.1 SpringBoot 配置文件)
  • 二、配置文件的格式
    • [2.1properties 基本语法](#2.1properties 基本语法)
    • [2.2 yml 配置文件说明](#2.2 yml 配置文件说明)
      • [2.2.1 yml语法](#2.2.1 yml语法)
      • [2.2.2 yml配置不同数据类型及null](#2.2.2 yml配置不同数据类型及null)
      • [2.2.3 yml配置读取](#2.2.3 yml配置读取)
      • [2.2.4 yml配置对象](#2.2.4 yml配置对象)
      • [2.2.5 yml配置集合](#2.2.5 yml配置集合)
      • [2.2.6 yml配置Map](#2.2.6 yml配置Map)
      • [2.2.7 yml优缺点](#2.2.7 yml优缺点)

一、配置文件作用

配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。

1.1 SpringBoot 配置文件

SpringBoot 支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到 SpringBoot 的目的。很多项目或者框架的配置信息也放在配置文件中,比如:

  • 项目的启动端口
  • 数据库的连接信息 (包含用户名和密码的设置)
  • 第三方系统的调用密钥等信息
  • 用于发现和定位问题的普通日志和异常日志等.

二、配置文件的格式

SpringBoot 配置文件有以下三种:

  • application.properties
  • application.yml
  • application.yaml

    说明:
  • 理论上讲.properties 和.yml 可以并存在于一个项目中,当.properties 和.yml并存时,两个配置都会加载。如果配置文件内容有冲突,则以.properties 为主,也就是.properties 优先级更高。
  • 虽然理论上来讲.properties 可以和.yml 共存,但实际的业务当中,我们通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。
  • properties 配置文件说明 properties 配置文件是最早期的配置文件格式,也是创建 SpringBoot
    项目默认的配置文件

2.1properties 基本语法

properties 是以键值的形式配置的,key 和 value 之间是以 "=" 连接的

配置文件中使用 "#" 来添加注释信息。

2.1.1读取配置文件信息

@Value 注解使用 "${}" 的格式读取

properties 配置:

java 复制代码
mykey.key1=hi

读取:

java 复制代码
@RestController
public class PropertiesController {
    @Value("${mykey.key1}")
    private String key1;

    @RequestMapping("/getkey")
    public String key(){
        return "key值为"+key1;
    }
}

2.1.2 properties缺点

信息冗余,比如图上那些


2.2 yml 配置文件说明

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

2.2.1 yml语法

yml 是树形结构的配置文件,它的基础语法是 "key: value"

key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略,基础语法如下:

2.2.2 yml配置不同数据类型及null

java 复制代码
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表null
null.value: ~
# "" 空字符串
#, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''

·注意:·

  • 字符串默认不用加上单引号或者双引号。
  • 单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串。比如 /n
  • 双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义。

2.2.3 yml配置读取

方式与properties方式相同,使用@Value注解即可

2.2.4 yml配置对象

不能用 @Value 来读取配置中的对象了,此时要使用另一个注解 @ConfigurationProperties 来读取

java 复制代码
student:
  id: 1
  name: liming
  age: 18

或者行内写法

java 复制代码
student: {id: 1,name: Java,age: 18}

@ConfigurationProperties注解需要指定 **prefix属性 **,用来匹配 yml 中配置的对象前缀(比如配置的student)

java 复制代码
@Repository
@Data
@ConfigurationProperties(prefix = "student")
public class Student {
    private int id;
    private String name;
    private int age;

}
java 复制代码
@RestController
public class StudentController {
    @Autowired
    private Student student;

    @RequestMapping("getstudent")
    public String getStudent(){
        return student.toString();
    }
}

2.2.5 yml配置集合

java 复制代码
dbtypes:
 name:
 - mysql
 - sqlserver
 - db2

2.2.6 yml配置Map

java 复制代码
maptypes:
 map:
 k1: kk1
 k2: kk2
 k3: kk3

2.2.7 yml优缺点

优点:

  • 可读性高,写法简单,易于理解
  • 支持多种数据类型
  • 支持多种编程语言

缺点:

  • 不适合写复杂的配置文件
  • 对格式有较强的要求(比如空格)
相关推荐
Gary董20 小时前
内存泄漏和溢出
java·jvm
Elieal20 小时前
SpringBoot 中处理接口传参时常用的注解
java·spring boot·后端
程序员侠客行20 小时前
Spring集成Mybatis原理详解
java·后端·spring·架构·mybatis
摇滚侠20 小时前
在 IDEA 中,GIT 合并分支时选择远程的 dev 分支和本地的 dev 分支,有区别吗
java·git·intellij-idea
fanruitian21 小时前
k8s 更新镜像
java·服务器·kubernetes
散峰而望21 小时前
【数据结构】假如数据排排坐:顺序表的秩序世界
java·c语言·开发语言·数据结构·c++·算法·github
En^_^Joy21 小时前
Kubernetes Pod控制器深度解析(K8s)
java·容器·kubernetes
LYOBOYI12321 小时前
qml程序运行逻辑
java·服务器·数据库
可问春风_ren21 小时前
Git命令大全
前端·javascript·git·后端
jiayong2321 小时前
JVM垃圾回收机制面试题
java·开发语言·jvm