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

Spring —— Spring Boot 配置文件

JavaEE传送门

JavaEE

Spring —— Bean 作用域和生命周期

Spring —— Spring Boot 创建和使用


目录

  • Spring Boot 配置文件
    • Spring Boot 配置文件格式
    • properties配置文件
      • properties 基本语法
      • properties 缺点
    • yml 配置文件
      • yml 基本语法
      • yml 配置不同类型数据及 null
      • yml 配置对象
      • yml 配置集合
    • properties VS yml
    • 设置不同环境的配置文件


Spring Boot 配置文件

如果没有配置信息, Spring Boot 项目就不能连接和此操作数据库, 甚至是不能保存可以用于排查问题的关键日志, 配置文件的作用是非常重要的.

  1. 系统使用的配置文件 (系统配置文件), 如端口号的配置, 链接数据库的配置
  2. 用户自定义配置文件

Spring Boot 配置文件格式

  1. .properties
  2. .yml (yaml)

# 注意事项 #

  1. 当一个项目中, 存在两种格式的配置文件, 并且两个配置文件间中设置了相同的配置项, 但之不同时. .properties 配置文件的优先级最高, 但加载完 .properties 文件之后, 也会加载 .yml 文件的配置信息.
  2. 理论上讲 .properties 可以和 .yml 共存, 但实际业务中, 我们通常会采用一种统一的配置文件格式, 这样可以更好的维护.

properties配置文件

properties 基本语法

# properies 以键值的形式配置的: key=vaule.

# 设置端口号
server.port=8888

# 我们还可以自定义配置项

myTest=gujiu

我们还可以读取配置项中的内容, 使用 @Value 注解来实现, @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${myTest}")private String mytest;@RequestMapping("/getconf")public String getConfig() {return mytest;}
}

注: 不可以用 @Value(“myTest”) 读取, 其含义是, 将字符串赋值给 mytest 变量.


properties 缺点

当我们想配置数据库的时候.

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

从上述配置 key 中可以看出, properties 配置文件中会有很多的冗余信息.

想要解决这个问题,就可以使用 yml 配置⽂件的格式化了.


yml 配置文件

yml (YAML - Yet Another Markup Language) 翻译成中文 “另一种标记语言”

yml 优点

  1. yml 是一个可读性高, 写法简单, 易于理解, 他的语法和 JSON 语言类似.
  2. yml 支持更多的数据类型, 它可以简单表达清单 (数组), 散列表, 标量等数据形态, 它使用空白符号缩进和大量依赖外观的特色, 特别时候来表达或编辑数据结构, 各种配置文件等.
  3. yml 支持更多的编程语言, 它不只是 Java 中可以使用在 Golang, PHP, Python, Ruby, JavaScripy, Perl 中.

yml 基本语法

yml 是树形结构的配置文件: key: vaule .

# 注意 # key 和 vaule 直接使用英文冒号加空格的方式组成, 空格不可省略.

# 配置端口
server:port: 6666
# 自定义配置  
mytest2: gugu

同样是使用 @Value 注解使用 “${}” 的格式读取.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${mytest2}")private String myTest;@RequestMapping("/getconf2")public String getConfig2() {return myTest;} 
}

当我们配置数据库连接

# 配置数据库连接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8username: rootpassword: 123456


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: ~

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

# 字符串
str1: Hello \n Spring Boot.
str2: 'Hello \n Spring Boot.'
str3: "Hello \n Spring Boot."

读取一下, str1, str2, str3.

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Value("${str1}")private String str1;@Value("${str2}")private String str2;@Value("${str3}")private String str3;@PostConstructpublic void postConstruct() {System.out.println("str1: " + str1);System.out.println("str2: " + str2);System.out.println("str3: " + str3);}
}

运行结果展示:

# 注意事项 #

  • 字符串默认不⽤加上单引号或者双引号.
  • 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据.
  • 双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思.

yml 配置对象

比如: 我们配置一个学生对象

student:id: 1name: Gujiuage: 18

或者使用行内写法

student: {id: 1,name: Gujiu,age: 18}

读取配置对象

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

# 首先要创建一个实体类:

@Component
@ConfigurationProperties(value = "student")
@Data
public class Student {private int id;private String name;private int age;}

# 调用类代码

@Controller // 当前类为控制器
@ResponseBody // 返回的是数据, 而非页面
public class TestController {@Autowiredprivate Student student;@PostConstructpublic void postConstruct() {System.out.println(student);}
}//运行结果: Student(id=1, name=Gujiu, age=18)

yml 配置集合

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

mynames:name:- Gujiu- GUJIU- gugu

或者使用行内写法

mynames: {name: [Gujiu,GUJIU,gugu]}

读取配置对象

和读取对象一样, 使用 @ConfigurationProperties 来读取

@Component
@ConfigurationProperties("mynames")
@Data
public class ListConfig {private List<String> name;
}

properties VS yml

  • 二者都是 Spring Boot 的配置文件, 二者的诞生时间是不同的. properties 是默认的配置文件, 诞生的比较早. yml 是后来才出现的另一种标记语言的配置文件.
  • properties 是以 key=vaule 的形式配置的键值类型的配置文件, 而 yml 使用的类似 JSON 格式的树形配置方式进行配置的. yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用 “: ” 英文冒号加空格的方式设置,并且空格不可省略.
  • properties 为早期并且默认的配置文件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题
  • yml 通用性更好, 支持更多语言,如 Java、Go、Python 等,如果是云服务器开发,可以使用一份配置⽂件作为 Java 和 Go 的共同配置文件.
  • yml 功能比较强大, 支持更多的数据类型, 对中文的兼容性非常好.

设置不同环境的配置文件

  1. 创建不同环境的配置文件:

    • application-dev.yml (开发环境)
    • application-prod.yml (生产环境)
  2. application.yml 中设置运行环境:

    # 开发环境
    spring:profiles:active: dev
    
    # 生产环境
    spring:profiles:active: prod
    

🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
在这里插入图片描述
在这里插入图片描述

这里是Gujiu吖!!感谢你看到这里🌬
祝今天的你也
开心满怀,笑容常在。

相关文章:

Spring —— Spring Boot 配置文件

JavaEE传送门 JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 目录 Spring Boot 配置文件Spring Boot 配置文件格式properties配置文件properties 基本语法properties 缺点 yml 配置文件yml 基本语法yml 配置不同类型数据及 nullyml 配置对象…...

Python 网络爬虫与数据采集(一)

Python 网络爬虫与数据采集 第1章 序章 网络爬虫基础1 爬虫基本概述1.1 爬虫是什么1.2 爬虫可以做什么1.3 爬虫的分类1.4 爬虫的基本流程1.4.1 浏览网页的流程1.4.2 爬虫的基本流程 1.5 爬虫与反爬虫1.5.1 爬虫的攻与防1.5.2 常见的反爬与反反爬 1.6 爬虫的合法性与 robots 协议…...

2023年6月DAMA-CDGP数据治理专家认证请尽快报名啦!

目前6月DAMA-CDGP数据治理认证考试开放报名地区有&#xff1a;北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中&#xff0c;打算参加6月考试的朋友们可以抓紧时间报名啦&#xff01;&#xff01;&#xff01; 5月初&#xff0c;…...

STM32+esp8266,让你的STM32开发板连接网络-----esp8266

分享一下&#xff0c;STM32开发板连接网络的第一种方法&#xff1a;连接esp8266。 esp8266与STM32利用串口通信连接&#xff0c;esp8266连接网络&#xff0c;把收到的数据通过串口的方式传输给STM32&#xff0c;之后STM32接收到消息做出对应的反应。 使用到的开发板如图&…...

分布式缓存的基础知识

前言 现代互联网应用中&#xff0c;分布式缓存成为了必不可少的一环。它通过在多台服务器之间共享数据&#xff0c;避免了网络通信的高延迟和低带宽的性能问题。本文将介绍分布式缓存的基础知识&#xff0c;包括缓存机制、常见的缓存策略以及缓存的使用场景。 缓存机制 缓存是…...

Vue3通透教程【七】生命周期函数

文章目录 🌟 写在前面🌟 生命周期钩子函数🌟 组合式API生命周期🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选…...

《“裸奔”时代的网络防护:如何保护你的隐私和数据安全》

一、引言 在此时此刻&#xff0c;你可能正在使用电子设备阅读这篇文章。你可能在一天中的大部分时间都在与网络世界互动&#xff0c;无论是通过电子邮件、社交媒体、在线购物&#xff0c;还是通过流媒体服务消费内容。然而&#xff0c;你有没有考虑过&#xff0c;当你在享受这些…...

mapreduce优化方法

1&#xff09;数据输入&#xff1a; 1&#xff09;合并小文件&#xff1a;在执行mr任务前将小文件进行合并&#xff0c;大量的小文件会产生大量的map任务&#xff0c;增大map任务装载次数&#xff0c;而 任务的装载比较耗时&#xff0c;从而导致 mr 运行较慢。 2&#xff09;…...

06-nexus搭建Docker私仓

使用nexus创建docker私有仓库 Nexus的安装请参考该文档&#xff1a;https://www.yuque.com/tmfl/pom/uumrx2 Nexus配置Docker仓库步骤&#xff1b; nexus默认docker是失效的&#xff0c;需要 在security --> Realms&#xff0c;将docker配置成Active在 Repository 的 Blo…...

【RS专题】eval层混淆和逻辑完整分析 - 扣代码终结篇

如有侵权、联系本人下架 首先明确一下目标,我们要先获取网页200的源代码,RS5代第一次响应为412,第二次为200。如果是200就表示正常 以下为某 yjj RS5请求成功的结果,具体流程请看完文章,源-码–答-案也会在末 尾公 布 前面是定义了非常多和函数,一直往下拉,直到出现v…...

基于matlab使用主动声纳系统进行水下目标检测

一、前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案。声纳系统由各向同性投影仪阵列和单个水听器元件组成。投影仪阵列呈球形。反向散射信号由水听器接收。接收到的信号包括直接和多路径贡献。 二、水下环境 在浅水环境中&#xff0c;声源和目标之间存在多个传播路径…...

[socket]hpsocket-pull模式

为什么要用pull模式呢&#xff0c;我不是所谓的别人说pull效率高&#xff0c;是因为包头的长度 int不是固定长度。服务器IO-HPSocket PUSH&#xff1a;收到数据立马触发OnReceive&#xff0c;由开发人员自己实现拆包和缓冲区的管理逻辑。 PULL&#xff1a;收到数据立马触发OnR…...

数据分析师 ---- SQL强化(3)

数据分析师 ---- SQL强化(3) 题目&#xff1a;每个月Top3的周杰伦歌曲 从听歌流水中找到18-25岁用户在2022年每个月播放次数top 3的周杰伦的歌曲 输入例子&#xff1a; drop table if exists play_log; create table play_log (fdate date,user_id int,song_id int ); inser…...

微信小程序商品分类页最佳实践

首先我们来分析下UI小妹发来的产品原型图&#xff1a; 微信小程序商品分类页需要实现 1.单击左边的商品类目&#xff0c;右侧实现联动跳转到对应商品类目标题&#xff1b; 2.触屏拖动右侧商品列表&#xff0c;右侧跳转到对应商品类目&#xff1b; 2.分析需求我们可以把屏幕分…...

正则化解决过拟合

本片举三个例子进行对比&#xff0c;分别是&#xff1a;不使用正则化、使用L2正则化、使用dropout正则化。 首先是前后向传播、加载数据、画图所需要的相关函数的reg_utils.py&#xff1a; # -*- coding: utf-8 -*-import numpy as np import matplotlib.pyplot as plt impor…...

在 Windows 上安装 Helm包

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 Helm包。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 Helm是什么 Helm是Kubernetes的包管理工具&#xff0c;类似于centos的yum&#xff0c;能够快速查找、下载和安装…...

Clion开发STM32之OTA升级模块(一)

什么是OTA 百度百科解释个人理解&#xff1a;就是不通过烧录的方式&#xff0c;通过串口、网口、无线对主板运行的程序进行升级。减少后期的一个维护迭代程序的一个成本。 STM32的OTA升级模块的一个设计 程序启动的一个框架流程图(大致流程) FLASH的一个划分框图 BootLoader…...

Java供应链安全检测SDL方法论

近些年,开源程序陆续爆出安全漏洞,轻则影响用户体验,重则业务应用沦陷。大量的业务应用以及每天数千次的迭代,使得自动检测和治理第三方开源程序成为企业安全建设的必要一环。如何来建设这一环呢?SCA(软件成分分析) 概念 什么是SCA? 源代码或二进制扫描的软件成分分析 什…...

Magic-API的部署

目录 概述简介特性 搭建创建元数据表idea新建spring-boot项目pom.xmlapplication.properties打包上传MagicAPI-0.0.1-SNAPSHOT.jar开启服务访问 magic语法 概述 简介 magic-api是一个基于Java的接口快速开发框架&#xff0c;编写接口将通过magic-api提供的UI界面完成&#xf…...

程序进制换算

进制数介绍 一、进制介绍 二进制 &#xff1a;0或1&#xff0c;满2进1&#xff0c;以0B或者0b开头&#xff0c;如 0b1101 八进制&#xff1a;0-7&#xff0c;满8进1&#xff0c;&#xff0c;以0开头&#xff0c;如0234 十进制&#xff1a;0-9&#xff0c;满10进1&#xff0c;…...

Packet Tracer - 使用 CLI 配置并验证站点间 IPsec VPN

Packet Tracer - 使用 CLI 配置并验证站点间 IPsec VPN 地址分配表 设备 接口 IP 地址 子网掩码...

【华为OD机试真题】最小的调整次数(python版)100%通过率 超详细代码注释 代码解读

【华为OD机试真题 2022&2023】真题目录 @点这里@ 【华为OD机试真题】信号发射和接收 &试读& @点这里@ 【华为OD机试真题】租车骑绿道 &试读& @点这里@ 最小的调整次数 知识点队列栈 时间限制:1s空间限制:256MB限定语言:不限 题目描述: 有一个特异性…...

WPF中嵌入web网页控件 WebBrowser

1 WebBrowser特点 <font colorblue>WebBrowser控件内部使用IE的引擎&#xff0c;因此使用WebBrowser我们必须安装IE浏览器。 WebBrowser使用的是IE内核&#xff0c;许多H5新特性都不支持&#xff0c;然后使用谷歌内核和火狐内核会使软件的体积增加至几十MB。 <font c…...

Kafka原理之消费者

一、消费模式 1、pull(拉)模式(kafka采用这种方式) consumer采用从broker中主动拉取数据。 存在问题&#xff1a;如果kafka中没有数据&#xff0c;消费者可能会陷入循环中&#xff0c;一直返回空数据 2、push(推)模式 由broker决定消息发送频率&#xff0c;很难适应所有消费者…...

PCIe的capability扩展空间字段解释

解释 这是一段关于高级错误报告的信息&#xff0c;其中包含多个字段和值。以下是每个字段的详细解释&#xff1a; Capabilities: [100 v1] Advanced Error Reporting 这是该设备支持高级错误报告的能力标识符。 UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- R…...

力扣sql中等篇练习(二十)

力扣sql中等篇练习(二十) 1 寻找面试候选人 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 分为以下两者情况,分别考虑,然后union进行处理(有可能同时满足,需要去进行去重) # ①该用户在 三场及更多…...

【神经网络】tensorflow -- 期中测试试题

题目一&#xff1a;&#xff08;20分&#xff09; 请使用Matplotlib中的折线图工具&#xff0c;绘制正弦和余弦函数图像&#xff0c;其中x的取值范围是&#xff0c;效果如图1所示。 要求&#xff1a; (1)正弦图像是蓝色曲线&#xff0c;余弦图像是红色曲线&#xff0c;线条宽度…...

计算机基础--计算机存储单位

一、介绍 计算机中表示文件大小、数据载体的存储容量或进程的数据消耗的信息单位。在计算机内部&#xff0c;信息都是釆用二进制的形式进行存储、运算、处理和传输的。信息存储单位有位、字节和字等几种。各种存储设备存储容量单位有KB、MB、GB和TB等几种。 二、基本存储单元…...

大数据Doris(十六):分桶Bucket和分区、分桶数量和数据量的建议

文章目录 分桶Bucket和分区、分桶数量和数据量的建议 一、分桶Bucket...

【webrtc】web端打开日志及调试

参考gist Chrome Browser debug logs sawbuck webrtc-org/native-code/logging 取日志 C:\Users\zhangbin\AppData\Local\Google\Chrome\User Data C:\Users\zhangbin\AppData\Local\Google\Chrome\User Data\chrome_debug.logexe /c/Program Files/Google/Chrome/Applicationz…...