SpringBoot项目配置文件

一、配置文件作用

存放项目中比较重要的数据

比如数据库的连接信息(包括用户名和密码设置)、项目的启动端口、第三方系统的调用密匙等信息、用于发现和排查定位问题的普通日志和异常日志等。

二、配置文件格式

SpringBoot配置文件主要分为两种格式.properties.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxZ0dj8u-1691464486374)(F:\typora插图\image-20230509161053491.png)]

其中.properties类型的配置文件是默认的,两者可以同时存在,但实际开发中公司会规定使用哪一种。

properties类型的适合新手,不容易出错但是比较繁琐;yml比较简洁但是容易出错。一般初学使用前者,实际开发中后者使用居多。

下边详细说明,并进行对比。

三、properties配置文件说明

基本语法

键值形式:key=value

如:server.port=9090

读取配置文件

一般来讲,配置文件会随着spring容器的启动而自动加载,但是也可以主动读取配置文件中的内容,通过@Value注解实现。

使用方式:@Value+“${}”格式读取

例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WXzRnI8R-1691464486374)(F:\typora插图\image-20230509162213332.png)]

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${server.port}")
    private String port;//这里接受类型一般是String,一般什么都能接收
    @PostConstruct
    public void postConstruct(){
        System.out.println("Read Config:port:"+port);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iM2ZNCz2-1691464486375)(F:\typora插图\image-20230509162248225.png)]

优缺点

优点1.是默认的 2.优先级高于yml 3.写法简单,不易出错
缺点1.写法比较冗余

为什么说比较冗余呢?

看这几个配置项即可:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32gkGoZj-1691464486375)(F:\typora插图\image-20230509162550735.png)]

而同样的配置项在yml格式下就会简便很多,如下所示:

spring:
    datasource:
    	url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    	username: root
    	password: root

四、yml配置文件说明

基本语法

key: value

例如:

server:
	port: 9090

注意:冒号后边要加空格,不然不生效!!!!!

使用yml连接数据库

spring:
	datasource:
        url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
        username: root
        password: root

使用yml配置不同数据类型及null

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

yml配置的读取

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

注:这里需要把properties文件删了,不然读不到yml的配置

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${server.port}")
    private String port;//这里接受类型一般是String,一般什么都能接收
    @PostConstruct
    public void postConstruct(){
        System.out.println("Read Config:port:"+port);
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ajDBvrYt-1691464486376)(F:\typora插图\image-20230509163606523.png)]

注意:读取值为 null 的配置和根本不存在的配置结果不⼀致,是两回事,要注意区分。前者能正常启动而后者直接报错。

配置字符串的单双引号问题

准备工作:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeRqRtH8-1691464486376)(F:\typora插图\image-20230509164434054.png)]

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadConfig {
    @Value("${string.str1}")
    private String str1;
    @PostConstruct
    public void postConstruct1(){
        System.out.println("Read Config:str1"+str1);
    }

    @Value("${string.str2}")
    private String str2;
    @PostConstruct
    public void postConstruct2(){
        System.out.println("Read Config:str2"+str2);
    }

    @Value("${string.str3}")
    private String str3;
    @PostConstruct
    public void postConstruct3(){
        System.out.println("Read Config:str3"+str3);
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWrW2xGP-1691464486377)(F:\typora插图\image-20230509164407301.png)]

结论:

  1. 字符串默认不需要加单双引号
  2. 单引号中转义字符只是一个普通的字符串数据
  3. 双引号中,转义字符串会表达出来对应的特殊含义

配置对象

使用@ConfigurationProperties注解:

package com.example.demo.component;

import lombok.Data;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class StudentComponent {
    private int id;
    private String name;
}

向ReadConfig中添加代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9hBIiTQ-1691464486377)(F:\typora插图\image-20230509165612780.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4s7AvpDo-1691464486377)(F:\typora插图\image-20230509165510178.png)]

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b5FoUC3V-1691464486378)(F:\typora插图\image-20230509165456316.png)]

另外,还可以配置集合读取集合,当然他也是使用@Configuration来做的

系统配置项很多,有需要查看官网即可

两种格式配置文件对比

  1. 语法格式上不同,properties使用=连接key和value,yml使用:+空格+换行缩进连接key和value
  2. 通用性上不同,yml支持更多语言

properties格式配置文件示例

补充:两种文件都可以使用#写注释

[外链图片转存中...(img-nlO4W1of-1691464486378)]

yml格式配置文件示例

[外链图片转存中...(img-NMJeoq0f-1691464486379)]

设置不同环境配置文件演示

设置成开发环境的端口号:

[外链图片转存中...(img-eoEoExdL-1691464486379)]

设置成测试环境的端口号同样能启动:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRguo1V8-1691464486379)(F:\typora插图\image-20230509172024790.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值