【Spring】Spring Boot 配置文件(7)

news/2024/11/2 17:13:33/

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。

博客涉及框架的重要知识点,根据序号学习即可。

有什么不懂的都可以问我,看到消息会回复的,可能会不及时,请见谅!!

目录

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。

博客涉及框架的重要知识点,根据序号学习即可。

1、配置文件作用

1.1 配置文件的重要性

1.2 Spring Boot配置文件

2、配置文件格式与优先级

2.1 Spring Boot配置文件格式

2.2 配置文件的优先级

3、使用application.properties进行配置

3.1 基本语法

3.2 读取配置文件

3.3 properties使用缺点

4、使用application.yml文件进行配置

4.1 基本语法

4.2 使用yml连接数据库

4.3 yml配置不同的数据类型及null

        4.3.1 yml配置读取

        4.3.2 value值加单双引号

4.4 配置对象

4.5 配置集合

4.6 配置Map

4.7 yml 优缺点


1、配置文件作用

1.1 配置文件的重要性

计算机上有数以千计的配置文件,其主要目的是为了解决硬编码【硬编码的意思就是将数据直接嵌入到程序或者其他可执行对象的源代码中,简单来说就是“代码写死”】带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。

1.2 Spring Boot配置文件

(1)Spring Boot支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到Spring Boot的目的

(2)很多项目或者框架的配置信息也放在配置文件中,比如:项目的启动端口、数据库的连接信息(包含用户名和密码的设置)、第三方系统的调用密钥等信息、用于发现和定位问题的普通日志和异常日志等




2、配置文件格式与优先级

2.1 Spring Boot配置文件格式

(1)application.properties

(2)application.yml

(3)application.yaml

yml为yaml的简写,实际开发中出现频率最高,但是它的格式非常严格,一个空格也可能会导致出错。yaml和yml的使用方式一样的,所以只讨论前两个就好了

2.2 配置文件的优先级

理论上讲,.properties和.yml可以并存在一个项目,当.properties和.yml并存时,两个配置都会加载。如果配置文件有冲突,则以.properties为主,也就是.properties优先级更高




3、使用application.properties进行配置

3.1 基本语法

(1)properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件

(2)properties是以键值对的形式配置的,key和value之间用等号连接

(3)例子

ps:#号后为注释

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

3.2 读取配置文件

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

可以在方法上添加该注解,然后在方法中可以获取需要的配置文件的内容

3.3 properties使用缺点

很明显通过上面的例子可以看出来,properties文件中会有很多重复的、冗余的信息。为了解决这个问题,就可以使用yml配置文件的格式化了。




4、使用application.yml文件进行配置

4.1 基本语法

(1)yml是YAML(Yet Another Markup Language)的缩写,翻译成中文就是“另一种标记语言”。

(2)yml的基础语法:是以“Key: Value”的形式存在的。key和value之间使用英文冒号和空格的方式,空格不可省略。这里就能感觉到yml文件的劣势就是格式要求非常严格,一个简单的空格就会导致配置文件读取失败。

4.2 使用yml连接数据库

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatisdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver

4.3 yml配置不同的数据类型及null

        4.3.1 yml配置读取

        yml读取配置的方式和properties相同,使用@Value注解即可,@Value注解使用"${ }"的格式读取

        4.3.2 value值加单双引号

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

        (1)单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串

        (2)双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义

举例:\n使用单引号的话,就不表示换行了,是一个普通的字符串,而\n使用双引号括起来表示它本身的含义,就是换行

4.4 配置对象

在yml中配置

这个时候不能用@Value来读取配置中的对象了,此时要使用另一个注解@ConfigurationProperties来读取

4.5 配置集合

4.6 配置Map

4.7 yml 优缺点

(1)优点:

①可读性高,写法简单,易于理解

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

③支持更多的编程语言,不局限于Java,还可以在Python、Ruby、Golang等中使用

(2)缺点:

①不适合写复杂的配置文件

②格式十分严格


http://www.ppmy.cn/news/1543919.html

相关文章

vscode markdown-image 图片粘贴自动上传到本地目录设置

.vscode/settings.json文件内容 {"markdown-image.base.fileNameFormat": "${hash}-${YY}${MM}${DD}-${HH}${mm}${ss}","markdown-image.local.path": "./images","markdown-image.base.uploadMethod": "Local",…

做等保二级备案需要准备哪些材料

做等保二级备案需要准备的材料主要包括以下几类: 1. 基本信息材料 营业执照副本:证明企业的合法经营资格。法人身份证明:证明企业法定代表人的身份。系统基本信息情况介绍表:详细描述信息系统的功能、应用场景、安全需求等。 2…

goframe开发一个企业网站 前端界面6

修改web_config的内容将网站的公共部分写入。 本文是想创建一个专统方式的网站&#xff0c;用title,keyword, content 之类的进行网站SEO&#xff0c;以利于百度收录 以下是百度搜索引擎对网站 title、keywords 和 description 的主要优化建议&#xff1a; <head><m…

界面控件DevExpress JS ASP.NET Core v24.1亮点 - 支持Angular 18

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

音视频开发之旅(99)-LoRA原理、源码解析与应用

目录 1. 背景与问题 2.LoRA的原理 3. 源码解析 4. SD中LoRA应用 5. 资料 一、背景与问题 随着深度学习的发展&#xff0c;预训练大型模型在自然语言处理、计算机视觉和多模态等领域取得了显著的成功。这些模型通常包含数亿甚至数十亿的参数&#xff0c;如GPT系列模型、LL…

django图书管理系统-计算机毕业设计源码00648

摘要 图书管理系统在数字化阅读趋势、图书馆自动化管理、用户体验需求和信息技术应用等方面具有重要的研究意义。图书馆自动化管理系统的引入和应用提高了图书借阅过程的效率和准确性&#xff0c;减少了对手工操作和纸质记录的需求。用户对系统的易用性、查询速度、借还流程有更…

一篇文章带你快速理解MySQL中的内连接和外连接

1. 内连接 内连接返回两个表中匹配连接条件的数据行。只有当两个表中都有匹配的行时&#xff0c;结果中才会包含这些行。如果连接条件不满足&#xff0c;那么这些行就不会出现在结果集中。 语法&#xff1a; select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件&…

通用型函数——冒泡排序

对于一般类型数据冒泡排序 &#xff08;int 、double 、char 、flort&#xff09; 代码&#xff1a;&#xff08;int型&#xff09; void bubble_sort(int* arr){int lensizeof(arr)/sizeof(int);int temp0;for(int i0;i<len-1;i){for(int j0;j<(len-i-1);j){if(arr[j…