【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优缺点

优点:

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

缺点:

  • 不适合写复杂的配置文件
  • 对格式有较强的要求(比如空格)
相关推荐
乌日尼乐3 分钟前
【Java基础整理】封装、继承、抽象、接口和多态
java·后端
heartbeat..4 分钟前
JavaWeb 入门 - HttpServletResponse 响应对象 详解
java·网络·http·web·response
zs宝来了6 分钟前
Spring Boot启动流程源码深度解析:电商订单系统面试实战
java·spring boot·面试·源码分析·电商
智航GIS6 分钟前
9.1 多线程入门
java·开发语言·python
我是谁的程序员7 分钟前
不用 Instruments 而在 Windows 环境下测试 iOS App
后端
ServBay7 分钟前
PHP 8.6 新特性预览,更简洁的语法与更严谨的类型控制
后端·php
文心快码BaiduComate11 分钟前
用Comate开发我的第一个MCP——让Vibe Coding长长脑子
前端·后端·程序员
神奇小汤圆13 分钟前
Spring Boot + 执行管道:让业务流程清晰可控
后端
消失的旧时光-194314 分钟前
从 Java 接口到 Dart freezed:一文彻底理解 Dart 的数据模型设计
java·开发语言·flutter·dart
就这个丶调调18 分钟前
Java ConcurrentHashMap源码深度解析:从底层原理到性能优化
java·并发编程·源码分析·线程安全·concurrenthashmap