当前位置: 首页 > article >正文

【Spring】_SpringBoot配置文件

目录

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件类型及命名

1.2 properties和yml的优先级

2. properties配置文件

1.1 properties语法格式

1.2 自定义配置及配置文件的读取

1.3 properties的缺点

3. yml配置文件

3.1 yml语法格式

3.2 自定义配置及配置文件的读取

3.4 yml配置文件

4. 更多配置示例:banner


配置文件最重要的目的是解决硬编码问题;

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件类型及命名

1、Spring Boot配置文件有以下三种:

(1)application.properties

(2)application.yaml;

(3)application.yml;(yml是yaml的缩写)

2、配置文件的命名必须如上所示,不能随便更改application,否则会无法识别:

(1)正确命名:

(2)错误命名:以properties文件为例,将application修改为applications:

1.2 properties和yml的优先级

现在application.properties中设置项目端口为9090:

在application.yml中设置端口为9091:

启动程序,查看启动日志:

现注释掉properties文件的端口设置语句,重新启动项目,启动日志如下:

关于配置文件的优先级总结如下:
1、当.properties和.yml共存在一个项目中时,二者都会被加载。但当二者配置有冲突时,.properties的优先级更高

2、通常在一个项目中仅保留两个配置文件之一即可;

2. properties配置文件

properties文件是Spring Boot项目创建的默认配置文件。

1.1 properties语法格式

properties配置文件以key-value形式组织,key与value用=连接

建议key使用小写,单词与单词之间使用.进行分割;

以配置项目端口号和配置数据库连接为例:

# 配置项目端口号
server.port=9090
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

注意使用的是spring的@value,不是lombok的@value:

1.2 自定义配置及配置文件的读取

若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:

现在application.properties中新增配置项,令其key为demo.key:

# 应用服务 WEB 访问端口
server.port=8080

# 自定义配置
demo.key=hello,properties

在Controller包下创建一个propertiesController类:

package com.example.iocdemo1.Controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PropertiesController {
    @Value("${demo.key}")
    private String key1;
    @RequestMapping("/readKey")
    public  String readKey(){
        return "Configuration item has read: key1 = "+key1;
    }
}

启动程序,通过Chrome进行访问:

可见配置文件成功读取;

1.3 properties的缺点

以连接数据库为例:

# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root

可见properties中存在一定冗余,如spring.datasource重复写; 

3. yml配置文件

3.1 yml语法格式

yml是树形配置文件,其基础语法格式为“key: value”,冒号后有一个空格不可省略,以配置项目端口号和配置数据库连接为例:

# 配置项目端口号
server:
  port: 9091
#  配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
    username: root
    password: root

注:1、逐层换行表示一种层次,idea会帮助换行,对于server、spring等必须顶格,否则会报错;

2、key与value之间的冒号后必须有一个空格,否则会报错;

yml文件中的颜色变化也可帮助检查:

3.2 自定义配置及配置文件的读取

若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:

现在application.yml中新增配置项,令其key为demo.key1:

demo:
  key1: hello,yml

 在Controller包下创建一个ymlController类:

package com.example.iocdemo1.Controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ymlController {
    @Value("${demo.key1}")
    private String key1;

    @RequestMapping("/readYml")
    public String redKey1(){
        return "Configuration item has read: key1 = "+key1;
    }
}

启动程序,使用Chrome进行访问: 

可见配置文件成功读取;

注:在yml配置的文件使用${ }进行读取时,需将配置文件中的冒号与空格更换为.

3.4 yml配置文件

优点:

1、可读性高,写法简单,易于理解;

2、支持更多数据类型,可简单表达对象,数组,List,Map等数据形态;

(本部分将在下一篇文章进行介绍)

3、支持更多编程语言,不仅在java中,在golang、python等中都可以使用;

缺点:

1、不适合写复杂的配置文件,当配置文件非常复杂时会造成可读性较差;

2、对格式有较强要求,尤其是空格很容易造成难以查找和纠正的错误;

4. 更多配置示例:banner

Spring官网提供的更多配置见链接:Common Application Properties :: Spring Boot

Spring默认启动日志设计的banner图形为spring:

现使用yml配置文件,以修改spring默认启动输出的banner图形为例,将其修改为Hello World。

第一步:查找官网banner的配置:

第二步:创建banner.txt文件:

可使用一些在线小工具生成Hello World图案,复制到banner.txt中:

第三步:在yml中新增banner.txt配置如下:

# 配置项目端口号
server:
  port: 9091
#  配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
    username: root
    password: root
  banner:
    location: banner.txt

第四步:重启程序,查看日志:


http://www.kler.cn/a/536492.html

相关文章:

  • DeepSeek 模型发展脉络全解析
  • 使用多模态大语言模型进行深度学习的图像、文本和语音数据增强
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
  • 机器学习--python基础库之Matplotlib (1) 超级详细!!!
  • 实名制-网络平台集成身份证实名认证接口/身份证查询-PHP
  • MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)
  • Jetpack ViewModel
  • grafana面板配置opentsdb
  • 大模型deepseek-r1 本地快速搭建
  • 3D展示已成趋势,哪些产品适合3D交互展示?
  • 不用调试器,如何定位“Hard Fault”?
  • 用户点击商品埋点的实现方案
  • 跨平台App开发,有哪些编程语言和工具,比较一下优劣势?
  • STM32的HAL库开发-通用定时器输入捕获实验
  • 【电商系统架构的深度剖析与技术选型】
  • 基于SpringBoot养老院平台系统功能实现五
  • MySQL三大日志——binlog、redoLog、undoLog详解
  • RAG:知识库参数设置
  • .NET Framework和.NET Core的区别
  • 深度学习入门:搭建你的第一个神经网络
  • 群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步
  • Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)
  • 如何在Windows 8.1上配置并使用Hyper-V功能
  • Qwen2-VL-2B-Instruct 模型 RK3576 板端部署过程
  • 821 简答题整理【笔记】
  • CosyVoice /F5-TTS /GPT-SoVITS /Fish-Speech 开源语音克隆与文本转语音(TTS)项目的对比整理