Spring —— Spring Boot 配置文件
|
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 项目就不能连接和此操作数据库, 甚至是不能保存可以用于排查问题的关键日志, 配置文件的作用是非常重要的.
- 系统使用的配置文件 (系统配置文件), 如端口号的配置, 链接数据库的配置
- 用户自定义配置文件
Spring Boot 配置文件格式
.properties
.yml (yaml)
# 注意事项 #
- 当一个项目中, 存在两种格式的配置文件, 并且两个配置文件间中设置了相同的配置项, 但之不同时.
.properties
配置文件的优先级最高, 但加载完 .properties 文件之后, 也会加载.yml
文件的配置信息. - 理论上讲
.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 优点
yml
是一个可读性高, 写法简单, 易于理解, 他的语法和JSON
语言类似.yml
支持更多的数据类型, 它可以简单表达清单 (数组), 散列表, 标量等数据形态, 它使用空白符号缩进和大量依赖外观的特色, 特别时候来表达或编辑数据结构, 各种配置文件等.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
功能比较强大, 支持更多的数据类型, 对中文的兼容性非常好.
设置不同环境的配置文件
-
创建不同环境的配置文件:
- application-dev.yml (开发环境)
- application-prod.yml (生产环境)
- …
-
在
application.yml
中设置运行环境:# 开发环境 spring:profiles:active: dev
# 生产环境 spring:profiles:active: prod
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!
相关文章:

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数据治理认证考试开放报名地区有:北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中,打算参加6月考试的朋友们可以抓紧时间报名啦!!! 5月初,…...

STM32+esp8266,让你的STM32开发板连接网络-----esp8266
分享一下,STM32开发板连接网络的第一种方法:连接esp8266。 esp8266与STM32利用串口通信连接,esp8266连接网络,把收到的数据通过串口的方式传输给STM32,之后STM32接收到消息做出对应的反应。 使用到的开发板如图&…...
分布式缓存的基础知识
前言 现代互联网应用中,分布式缓存成为了必不可少的一环。它通过在多台服务器之间共享数据,避免了网络通信的高延迟和低带宽的性能问题。本文将介绍分布式缓存的基础知识,包括缓存机制、常见的缓存策略以及缓存的使用场景。 缓存机制 缓存是…...
Vue3通透教程【七】生命周期函数
文章目录 🌟 写在前面🌟 生命周期钩子函数🌟 组合式API生命周期🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选…...
《“裸奔”时代的网络防护:如何保护你的隐私和数据安全》
一、引言 在此时此刻,你可能正在使用电子设备阅读这篇文章。你可能在一天中的大部分时间都在与网络世界互动,无论是通过电子邮件、社交媒体、在线购物,还是通过流媒体服务消费内容。然而,你有没有考虑过,当你在享受这些…...
mapreduce优化方法
1)数据输入: 1)合并小文件:在执行mr任务前将小文件进行合并,大量的小文件会产生大量的map任务,增大map任务装载次数,而 任务的装载比较耗时,从而导致 mr 运行较慢。 2)…...
06-nexus搭建Docker私仓
使用nexus创建docker私有仓库 Nexus的安装请参考该文档:https://www.yuque.com/tmfl/pom/uumrx2 Nexus配置Docker仓库步骤; nexus默认docker是失效的,需要 在security --> Realms,将docker配置成Active在 Repository 的 Blo…...

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

基于matlab使用主动声纳系统进行水下目标检测
一、前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案。声纳系统由各向同性投影仪阵列和单个水听器元件组成。投影仪阵列呈球形。反向散射信号由水听器接收。接收到的信号包括直接和多路径贡献。 二、水下环境 在浅水环境中,声源和目标之间存在多个传播路径…...
[socket]hpsocket-pull模式
为什么要用pull模式呢,我不是所谓的别人说pull效率高,是因为包头的长度 int不是固定长度。服务器IO-HPSocket PUSH:收到数据立马触发OnReceive,由开发人员自己实现拆包和缓冲区的管理逻辑。 PULL:收到数据立马触发OnR…...

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

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

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

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

Clion开发STM32之OTA升级模块(一)
什么是OTA 百度百科解释个人理解:就是不通过烧录的方式,通过串口、网口、无线对主板运行的程序进行升级。减少后期的一个维护迭代程序的一个成本。 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的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成…...

程序进制换算
进制数介绍 一、进制介绍 二进制 :0或1,满2进1,以0B或者0b开头,如 0b1101 八进制:0-7,满8进1,,以0开头,如0234 十进制:0-9,满10进1,…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...