SpringBoot 配置文件

目录

一,配置文件的作用

二,SpringBoot配置文件

2.1 .properties基本语法

获取配置文件内容

2.2 .yml基本语法

获取配置文件内容

加单双引号的区别

配置对象

配置集合

配置Map

2.3 properties 与 yml 的区别


一,配置文件的作用

配置文件(Configuration File)在软件开发、系统部署和运维中扮演着至关重要的角色。它们的主要作用是存储和管理软件应用或系统运行的参数、设置和选项,以便这些参数可以根据不同的环境、用户偏好或需求进行调整,而无需修改程序代码本身。

配置文件通常以文本文件的形式存在,如INI、XML、YAML、JSON等格式,它们易于阅读和编辑。许多现代编程语言和框架都提供了读取和解析配置文件的库或工具,使得配置文件的使用更加方便和高效。下面我们来聊一聊在SpringBoot中,有几种配置文件以及如何使用这些配置文件。

二,SpringBoot配置文件

SpringBoot 中有三种配置文件类型:application.properties,application.yml,application.yaml文件。其中 application.yml 和 application.yaml  的使用格式是一样的,所以这里只讲application.properties,application.yml。

注:application.properties,application.yml 这里的前缀application不能写错,写错了Spring就识别不了了!!!

2.1 .properties基本语法

properties是以键值对的形式配置的,key 和 value 之间使用 = 连接,如:

//端口号配置
server.port=8080
//数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=true
spring.datasource.username=****
spring.datasource.password=******
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

获取配置文件内容

我们不仅可以获取官方提供的配置,也可以获取自定义的配置,这里拿自定义的配置举例:

//自定义一个key=value
test.key1=101
test.key2=hello world

如果@Value("")中不加${},那么就会直接把值赋给key1,如下:

2.2 .yml基本语法

yml是以键值对的形式配置的,key 和 value 之间使用: 连接,如:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=true
    username: ***
    password: ******
    driver-class-name: com.mysql.cj.jdbc.Driver

上述配置与.properties配置的内容是相同的,可以发现.yml配置文件更加简便。学过python的可以发现,.yml的语法与python很类似,都是使用行对齐来表示它们之间的逻辑关系。注意(: 后面的空格是不能省略的)

举个例子:

获取配置文件内容

我们不仅可以获取官方提供的配置,也可以获取自定义的配置,这里拿自定义的配置举例:

//自定义
test:
  key1: 13
  key2: hello

获取和上面的.properties配置文件是一样的:

yml配置不同数据类型及null

# 字符串
string.value: Hello

# 布尔值,true或false
boolean.value: true
boolean.value1: false

# 整数
int.value: 10

# 浮点数
float.value: 3.14159

# Null,~代表null
null.value: ~

# "" / '' 空字符串,
#直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''

#注:如果要定义一个字符串为null的话,不能使用~,它会识别成字符~
#那么我们如何定义一个为null的字符串呢?答案是不用定义,既然它是null,那么为什么要定义!!!

加单双引号的区别

定义一个字符串有三种写法,一种是直接写,一种是加单引号,一种是加双引号,下面举个例子:

string:
  str1: hello \n world
  str2: 'hello \n world'
  str3: "hello \n world"
@RequestMapping("demo")
@RestController
public class demo3 {
    @Value("${string.str1}")
    String str1;
    @Value("${string.str2}")
    String str2;
    @Value("${string.str3}")
    String str3;
    @RequestMapping("/getStr")
    String getStr(){
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        return "...";
    }
}

可以发现:

  • 字符串默认不用加上单引号或者双引号
  • 单引号会转义特殊字符,使其失去转义功能,将转义字符变成一个普通字符
  • 双引号不会转义特殊字符,该转义还是转义

配置对象

student:
  id: 1
  name: zhangsan
  age: 18
@Data
@Component
@ConfigurationProperties(prefix = "student")//从配置文件中获取对象
public class Student {
    private int id;
    private String name;
    private int age;
}
@RequestMapping("demo")
@RestController
public class demo3 {
    @Autowired
    private Student student;
    
    @RequestMapping("/getStudent")
    String getStudent(){
        return student.toString();
    }
}

配置集合

list:
  arr:
    - 12
    - 3
    - 13
@Data
@Component
@ConfigurationProperties(prefix = "list")
public class ListConfig {
     List<Integer> arr;
}
@RequestMapping("demo")
@RestController
public class demo3 {
    @Autowired
    private ListConfig listConfig;

    @RequestMapping("/getList")
    String getList(){
        return listConfig.toString();
    }
}

配置Map

mymap:
  map:
    k1: v1
    k2: v2
    k3: v3
@Data
@Component
@ConfigurationProperties(prefix = "mymap")
public class MapConfig {
    Map<String, String> map;
}
@RequestMapping("demo")
@RestController
public class demo3 {
    @Autowired
    private MapConfig mapConfig;

    @RequestMapping("/getMap")
    String getMap(){
        return mapConfig.toString();
    }
}

2.3 properties 与 yml 的区别

  • properties使用点号(.)和(=)来表示键值对,如key=value;yml使用缩进和(: )来表示层次结构
  • properties主要支持字符串类型;yml支持多种数据类型,包括字符串、数字、布尔值、数组、对象等,可以直接在配置文件中表示复杂的数据结构,无需在读取时进行额外的转换。
  • 都支持多种编程语言, 不只是Java中可以使用, 在Golang, Python, Ruby, JavaScript中也可以使用

注:理论上讲 .properties .yml 可以并存在于⼀个项⽬中,当 .properties .yml 并存时,两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是.properties 优先级更⾼.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶祇秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值