七、深入了解SpringBoot的配置文件

一、配置端口号

通过配置文件application.properties配置修改端口号

修改 application.properties 文件

#端口号修改成 9090
server.port=9090

运行结果,观察日志

二、配置文件格式

Spring Boot 配置⽂件有以下三种:

• application.properties

• application.yml

• application.yaml

其中yml为yaml的简写,实际开发中出现频率最高

应⽤程序启动时,SpringBoot会⾃动从classpath路径找到并加载 application.properties 和 application.yaml 或者 application.yml ⽂件.

说明:

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

三、properties配置文件说明

properties 配置⽂件是最早期的配置⽂件格式,也是创建SpringBoot项⽬默认的配置⽂件

3.1 properties 基本语法

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

#端口号修改成 9090
server.port=9090
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
pring.datasource.password=123456

3.2 读取配置⽂件

如果在项目中,想要主动的读取配置文件中的内容,可以使用@Value注解来实现
@Value注解使用”${}“的格式读取,如下代码所示:

application.properties的文件配置:

book.key1=key1

在postman中运行结果: 

 3.3 properties 缺点分析

properties 配置是以key-value的形式配置的,properties配置文件中会有很多的冗余的信息 如下图:

 四、yml配置文件的说明

4.1 yml基本语法

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

key和value之间使⽤英文冒号加空格的⽅式组成,空格不可省略

使用yml连接数据库 

yml使用示例:

#端口号
server:port: 9092#连接数据库
spring:datasource:url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTCusername: rootpassword: 123456

yml和properties连接数据库的配置对比

yml:

 properties:

4.2 yml使用进阶 

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

#字符串
string.value: hello world#布尔值
boolean.value1: true
boolean.value2: false#整数
int.value: 10#浮点数
float.value: 3.14159#Null
null.value: ~#"" 空字符串
#  直接后⾯什么都不加就可以了,但这种⽅式不直观,更多的表⽰是使⽤引号括起来
empty.value: ""
4.2.1.1 yml配置读取

yml读取配置的⽅式和properties相同,使⽤@Value 注解即可,实现代码如下:

yml配置:

@RestController
public class PropertiesController {@Value("${int.value}")private int intValue;@RequestMapping("/readInt")public String readAll() {return "intValue:" + this.intValue ;}
}

在postman中测试    访问127.0.0.1:9090/readInt 

4.2.1.2 注意事项:value值加单双引号

字符串默认不⽤加上单引号或者双引号,如果加英⽂的单双引号可以表⽰特殊的含义。

在application.yml中配置如下信息:

String:str1: Hello \n Spring Boot.str2: 'Hello \n Spring Boot.'str3: "Hello \n Spring Boot."

在ReadYml中实现如下代码:

@RestController
public class ReadYml {@Value("${String.str1}")private String str1;@Value("${String.str2}")private String str2;@Value("${String.str3}")private String str3;@RequestMapping("/yml")public String readYml() {System.out.println("str1 : " + str1);System.out.println("str2 : " + str2);System.out.println("str3 : " + str3);return "yml";}
}

运行结果如下:

 4.2.2 配置对象

在yml中配置对象:

student:id: 1name: zhangsanage: 18

此时要使用另⼀个注解 @ConfigurationProperties 来读取

package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "student")
@Data
public class Student {private Integer id;private String name;private Integer age;
}

调用类(StudentController)的实现如下:

package com.example.demo.controller;import com.example.demo.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class StudentController {@Autowiredprivate Student student;@RequestMapping("/readStudent")public String readStudent() {return student.toString();}
}

访问 http://127.0.0.1:8080/readStudent:结果如下:

4.2.3 配置集合

配置文件也可以配置list集合:

dbtypes:name:-- mysql-- sqlserver-- db

集合的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取

package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Map;@Component
@ConfigurationProperties(prefix = "dbtypes")
@Data
public class DBType {private List<String> name;private Map map;
}

访问集合的实现如下:

@RestController
public class ReadYml {@AutowiredDBType dbType;@RequestMapping("/readList")public String readList() {return dbType.toString();}
}

访问 127.0.0.1:8080/readList 结果如下:

 4.2.4 配置Map

配置文件也可以配置map

maptypes:map:key1: value1key2: value2key3: value3

Map的读取和对象⼀样,也是使用@ConfigurationProperties 来读取

package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.HashMap;@Component
@ConfigurationProperties(prefix = "maptypes")
@Data
public class MapConfig {private HashMap<String, String> map;
}

打印类的实现:

package com.example.demo.controller;import com.example.demo.model.DBType;
import com.example.demo.model.MapConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ReadYml {@AutowiredMapConfig mapConfig;@RequestMapping("/readMap")public String readMap() {return mapConfig.toString();}
}

访问:127.0.0.1:8080/readMap 返回结果如下:

 五、使用yml的好处

优点:
1.可读性高,写法简单,易于理解
2.  支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态.

3.  支持更多的编程语言,不止是Java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用

缺点:

1、不适合写复杂的配置文件

xml 和 properties的对比图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

set集合

set集合 Set系列集合&#xff1a; 无序&#xff1a;存取顺序不一致 不重复&#xff1a;可以去除重复 无索引&#xff1a;没有带索引的方法&#xff0c;所以不能使用普通for循环遍历&#xff0c;也不能通过索引来获取元素 可以看出set是无序的存和打印的顺序不一样 Set接中的…

马尔科夫模型和隐马尔科夫模型区别

我用一个天气预报和海藻湿度观测的比喻来解释&#xff0c;保证你秒懂&#xff01; 1. 马尔可夫模型&#xff08;Markov Model, MM&#xff09; 特点&#xff1a;状态直接可见 场景&#xff1a;天气预报&#xff08;晴天→雨天→阴天…&#xff09;核心假设&#xff1a; 下一个…

SimpleFOC STM32教程10|基于STM32F103+CubeMX,速度闭环控制(有电流环)

导言 SimpleFOC STM32教程09&#xff5c;基于STM32F103CubeMX&#xff0c;ADC采样相电流 如上图所示, 增加了电流环. 效果如下&#xff1a; 20250123-200906 RTT 如上图所示&#xff0c;三相占空比依然是马鞍波。当我用手去给电机施加阻力时&#xff0c;PID要维持目标转速&am…

基于蓝牙6.0的RSSI和UWB融合定位方法,可行性分析

融合RSSI&#xff08;接收信号强度指示&#xff09;和UWB&#xff08;超宽带&#xff09;两种技术进行蓝牙6.0定位是完全可行的&#xff0c;并且可以带来更高的定位精度和稳定性。本文给出分析和MATLAB仿真结果 文章目录 技术优势RSSIUWB融合的优势 实现方案数据融合算法硬件要…

富文本 tinyMCE Vue2 组件使用简易教程

参考官方教程 TinyMCE Vue.js integration technical reference Vue2 项目需要使用 tinyMCE Vue2 组件(tinymce/tinymce-vue)的第 3 版 安装组件 npm install --save "tinymce/tinymce-vue^3" 编写组件调用 <template><Editorref"editor"v-m…

项目集成Nacos

文章目录 1.环境搭建1.创建模块 sunrays-common-cloud-nacos-starter2.目录结构3.pom.xml4.自动配置1.NacosAutoConfiguration.java2.spring.factories 5.引入cloud模块通用依赖 2.测试1.创建模块 sunrays-common-cloud-nacos-starter-demo2.目录结构3.pom.xml4.application.ym…

K8S 启动探测、就绪探测、存活探测

先来思考一个问题&#xff1a; 在 Deployment 执行滚动更新 web 应用的时候&#xff0c;总会出现一段时间&#xff0c;Pod 对外提供网络访问&#xff0c;但是页面访问却发生404&#xff0c;这个问题要如何解决呢&#xff1f;学完今天的内容&#xff0c;相信你会有自己的答案。 …

基于物联网的智能环境监测系统(论文+源码)

1系统的功能及方案设计 本课题为基于物联网的智能环境监测系统的设计与实现&#xff0c;整个系统采用stm32f103单片机作为主控制器&#xff0c;通过DHT11传感器实现智能环境监测系统温度和湿度的检测&#xff0c;通过MQ传感器实现CO2浓度检测&#xff0c;通过光照传感器实现光照…

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》030-自定义组件的插槽Mixin

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…

基于SpringBoot电脑组装系统平台系统功能实现六

一、前言介绍&#xff1a; 1.1 项目摘要 随着科技的进步&#xff0c;计算机硬件技术日新月异&#xff0c;包括处理器&#xff08;CPU&#xff09;、主板、内存、显卡等关键部件的性能不断提升&#xff0c;为电脑组装提供了更多的选择和可能性。不同的硬件组合可以构建出不同类…

网络工程师 (5)系统可靠性

前言 系统可靠性是指系统在规定的条件和规定的时间内&#xff0c;完成规定功能的能力。这种能力不仅涵盖了系统本身的稳定性和耐久性&#xff0c;还涉及了系统在面对各种内外部干扰和故障时的恢复能力和容错性。系统可靠性是评价一个系统性能优劣的关键指标之一&#xff0c;对于…

【2024年华为OD机试】(C卷,200分)- 推荐多样性 (JavaScriptJava PythonC/C++)

一、问题描述 问题描述 我们需要从多个已排序的列表中选取元素&#xff0c;以填充多个窗口。每个窗口需要展示一定数量的元素&#xff0c;且元素的选择需要遵循特定的穿插策略。具体来说&#xff0c;我们需要&#xff1a; 从第一个列表中为每个窗口选择一个元素&#xff0c;…

损失函数 Loss Function

分类问题和回归问题常使用的损失函数如下&#xff1a; 分类问题 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;&#xff1a;用于衡量两个概率分布之间的差异&#xff0c;在多分类问题中广泛应用。 ce_loss nn.CrossEntropyLoss() 回归问题 均方误差损失函数&…

Chameleon(变色龙) 跨平台编译C文件,并一次性生成多个平台的可执行文件

地址:https://github.com/MartinxMax/Chameleon Chameleon 跨平台编译C文件&#xff0c;并一次性生成多个平台的可执行文件。可以通过编译Chameleon自带的.C文件反向Shell生成不同平台攻击载荷。 登录 & 代理设置 按照以下步骤设置 Docker 的代理&#xff1a; 创建配置目…

DFFormer实战:使用DFFormer实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

几种K8s运维管理平台对比说明

目录 深入体验**结论**对比分析表格**1. 功能对比****2. 用户界面****3. 多租户支持****4. DevOps支持** 细对比分析1. **Kuboard**2. **xkube**3. **KubeSphere**4. **Dashboard****对比总结** 深入体验 KuboardxkubeKubeSphereDashboard 结论 如果您需要一个功能全面且适合…

DeepSeek API 的获取与对话示例

代码文件下载&#xff1a;Code 在线链接&#xff1a;Kaggle | Colab 文章目录 注册并获取API环境依赖设置 API单轮对话多轮对话流式输出更换模型 注册并获取API 访问 https://platform.deepseek.com/sign_in 进行注册并登录&#xff1a; 新用户注册后将赠送 10 块钱余额&#…

基于STM32的循迹小车设计与实现

1 系统方案设计 根据系统设计功能&#xff0c;展开基于STM32的循迹小车设计&#xff0c;整体设计框图如图2.1所示。系统采用STM32单片机作为控制器,通过L298驱动器控制两个直流电机实现对小车的运动控制&#xff0c;两路红外模块实现黑线的检测&#xff0c;HC-SR04超声波模块实…

Docker/K8S

文章目录 项目地址一、Docker1.1 创建一个Node服务image1.2 volume1.3 网络1.4 docker compose 二、K8S2.1 集群组成2.2 Pod1. 如何使用Pod(1) 运行一个pod(2) 运行多个pod 项目地址 教程作者&#xff1a;教程地址&#xff1a; https://www.bilibili.com/video/BV1Zn4y1X7AZ?…

算法每日双题精讲 —— 二分查找(寻找旋转排序数组中的最小值,点名)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 别再犹豫了&#xff01;快来订阅我们的算法每日双题精讲专栏&#xff0c;一起踏上算法学习的精彩之旅吧&#x1f4aa; 在算法的…