配置文件

SpringBoot 的热部署

Spring为开发者提供了一个名为spring-boot-devtools的模块来使SpringBoot应用支持热部署,提高开发者的开发效率,无需手动重启SpringBoot应用

相关依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> 
</dependency>

修改Java代码或者配置文件模块后可以通过ctrl+F9来实施热部署

配置文件

SpringBoot使用一个全局的配置文件,配置文件名是固定的

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot自动配置的默认值。

YML:配置例子

server:port: 8080

XML:配置例子

<server><port>8080</port>
</server>

YML语法

基本语法

k:(1空格)v: 表示一对键值对(1个空格必须有)

以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的

server:port: 8080path: /hello

其中的属性和值也是大小写敏感

值的写法

字符串默认不用加上单引号或双引号

“”:双引号:会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思,比如换行符(\n),如图:

我在双引号中间写了一个换行符,那么控制台输出这一行 person 信息的时候就会在 Jonathan 后面换行,如:

‘’:单引号:不会转义特殊字符,特殊字符只是一个普通的字符串数据,如图:

这次我把双引号换成了单引号,控制台输出的时候就不会换行了,只会把换行符当成普通字符处理,如:

对象,Map

对象

还是 k: v 的方式

friends:name: zhangsan age: 20

行内写法:

friends: {name: zhangsan,age: 18}

数组

用 - 值表示数组中的一个元素

pets:- cat- dog- pig

行内写法:

pets: {cat,dog,pig}

配置文件注入

配置文件:

person:name: 'Jonathan \n xxx'age: 27sex: "true"birthday: "1993/05/01"lists: [1,2,3]maps: {k1: 1,k2: 2,k3: 3}

javaBean:

/*** @ConfigurationProperties(prefix = "person")告诉SpringBoot将本类中的所有属性  * 和配置文件中相关的配置进行绑定*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {private String name;private int age;private boolean sex;private Date birthday;private List<Object> lists;private Map<String, Object> maps;
}

在这里我们可以导入配置文件处理器,以后编写配置就有提示了

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

我们可以通过另一种方式获取值

@Value和@ConfigurationProperties的区别

@Value@ConfigurationProperties
功能一个个指定批量注入配置文件中的属性
松散绑定(松散语法)不支持支持
SpEL支持不支持
JSR303数据校验不支持支持
复杂类型封装不支持支持

@Value是一一绑定的

@ConfigurationProperties支持松散绑定

数据校验:

只有前缀支持

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {@Emailprivate String email;
}

对于复杂封装类型 @Value 不适合,比如:

private List<Object> lists;private Map<String, Object> maps;

@PropertySource

/*** 将配置文件中配置的每一个属性的值,映射到这个组件中* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;* prefix = "person":配置文件中哪个下面的所有属性进行一一映射* *只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;* @ConfigurationProperties(prefix = "person")默认从全局配置文件中获取值;* */@PropertySource(value = {"classpath:person.properties"})@Component@ConfigurationProperties(prefix = "person")//@Validatedpublic class Person {/*** <bean class="Person">* <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>* <bean/>*///lastName必须是邮箱格式// @Email//@Value("${person.last‐name}")private String lastName;//@Value("#{11*2}")private Integer age;//@Value("true")private Boolean boss;

@ImportResource:

导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

想让Spring的配置文件生效,加载进来,就把@ImportResource放在SpringBoot启动类上

package com.qcby.springbootdemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;@ImportResource({"classpath:bean.xml"})
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

Profile

多Profile文件

我们在主配置文件编写的时候,文件名可以是 application-dev.properties

默认使用 application-dev.properties 的配置

yml支持多文档块方式

server:port: 8081
person:name: 'Jonathan \n xxx'age: 27sex: "true"birthday: "1993/05/01"lists: [1,2,3]maps: {k1: 1,k2: 2,k3: 3}
---
server:port: 8082
spring:config:activate:profiles: dev
---
server:port: 8083
spring:config:activate:profiles: prod

激活指定profile

在配置文件中指定 spring.profiles.active=dev

命令行:

java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

配置文件加载位置

springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

–file:./config/

–file:./

–classpath:/config/

–classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置;

优先级如图:

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

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

相关文章

Python与C#的三元运算符的写法区别

一、语法结构对比​​PyTorch示例​​dev torch.device("cuda:0" if torch.cuda.is_available() else "cpu")​​逻辑​​&#xff1a;若torch.cuda.is_available()为真&#xff0c;则返回"cuda:0"&#xff0c;否则返回"cpu"。​​作…

java 学习篇一

java知识点 一、windows不区分大小写&#xff0c;linux区分大小写 二、写java需要JDK&#xff0c;一般运行环境需要JRE 三、JDK安装一般是傻瓜是安装 四、java主要工具javac、java&#xff1b;其中javac用于编译.java -> .class&#xff1b;java用于执行.class文件执行时候不…

仙盟数据库应用-外贸标签打印系统 前端数据库-V8--毕业论文-—-—仙盟创梦IDE

基于 Excel 标签打印软件的外贸打印流程优化与实践摘要&#xff1a;在全球化外贸业务中&#xff0c;标签打印是货物流通、信息标识的关键环节。本文聚焦 “未来之窗云上打印技术” 的 Excel 标签打印软件&#xff0c;结合外贸平台实际场景&#xff0c;分析其在打印流程中的应用…

【Linux】权限详解 权限本质、权限属性、su、sudo提权、chmod\chown\chgrp、文件类别

文章目录一、权限的认识二、linux的权限本质三、linux的用户su指令sudo提权四、linux角色五、文件权限属性六、修改权限的指令操作chmod指令(权限只会验证一次)chown/chgrp指令修改文件权限的八进制方案七、文件类别详解一、权限的认识 什么是权限&#xff1f; 生活中处处都有权…

rman清理归档

1进入rman rman target / 2&#xff1a;列出所有归档日志的路径 LIST ARCHIVELOG ALL; 3.然后在执行 crosscheck archivelog all;&#xff08;检查 RMAN 存储库中记录的归档日志是否在磁盘或备份存储中实际存在。 4.然后在执行 delete noprompt expired archivelog all;&…

Selenium 处理动态网页与等待机制详解

在使用 Selenium 进行网页自动化操作时&#xff0c;动态网页往往是开发者遇到的第一个 “拦路虎”。想象一下&#xff1a;你明明在代码中写好了元素定位逻辑&#xff0c;运行时却频繁报错 “元素不存在”&#xff0c;但手动打开网页时元素明明就在眼前 —— 这很可能是因为网页…

Salesforce 与外部系统实时集成:基于事件驱动的异步集成架构

在 Salesforce 与外部系统&#xff08;如 ERP、财务系统、物流系统等&#xff09;的实时集成中&#xff0c;“稳定性” 是核心挑战 —— 既要保证数据同步的及时性&#xff0c;又要应对网络波动、系统故障、并发冲突等不可控因素。以下从问题本质、技术瓶颈、解决方案细节三个维…

React 的 `cache()` 函数

文章目录前言一、核心作用二、工作原理三、使用场景1. 避免重复数据请求2. 优化昂贵计算四、缓存规则详解五、与其它缓存方式对比六、服务端特殊行为七、最佳实践八、缓存失效策略九、使用限制十、与数据获取库集成总结&#xff1a;何时使用 cache()前言 React 的 cache() 函数…

大白编译——autotools与cmake

注意: 本文内容于 2025-07-20 01:58:56 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:大白编译——autotools与cmake。感谢您的关注与支持! 之前记录了通过autotools编译rpm包与deb包的步骤。参考小白编译——rpm包与deb包 - …

react19+nextjs+antd切换主题颜色

在 React 19 Next.js Ant Design 项目中实现主题切换功能&#xff0c;可以通过以下步骤完成。这里将提供完整方案&#xff0c;包含静态主题切换和动态实时切换两种方式。一、基础配置&#xff08;Ant Design 主题支持&#xff09; 1. 安装必要依赖 npm install antd ant-desi…

Modbus Slave 使用教程:快速搭建模拟从站进行测试与开发

文章目录Modbus Slave 使用教程&#xff1a;快速搭建模拟从站进行测试与开发步骤详解&#xff1a;搭建 Modbus Slave1. 安装与启动2. 配置从站连接 (Connection Setup)连接3. 定义从站数据 (设置寄存器/线圈映射)4. 设置初始值与变化模式 (可选但重要)5. 连接 Master 进行测试高…

通俗易懂神经网络:从基础到实现

引言 神经网络是人工智能和深度学习的核心&#xff0c;它模仿人脑的工作方式&#xff0c;通过数据学习复杂的模式。本文将以通俗易懂的方式讲解神经网络的基础知识&#xff0c;包括单层神经网络、多层神经网络&#xff0c;最后用Python代码实现一个简单的神经网络模型。1. 神经…

【Linux】基本指令详解(三) 指令本质、三个查找指令、打包压缩、重要热键、linux体系结构、命令行解释器

文章目录date指令cal指令find指令(指令本质也是文件)which指令file指令whereis指令alias指令grep指令top指令打包和压缩指令zip/unzip指令关于rzsz(linux与windows互传 )tar指令linux机器之间互传bc指令uname指令(查看linux机器体系结构)几个重要的热键[Tab]按键[Ctrl]c按键[Ct…

MSTP 多生成树协议

MSTP 多生成树协议 STP/RSTP 的局限性 所有 vlan 共享一颗生成树无法实现不同 vlan 在多条 Trunk 链路上的分担 二层链路负载均衡STP/RSTP 的局限——次优二层路径**次优二层路径&#xff08;Suboptimal Layer 2 Path&#xff09; 是指&#xff1a; ** 数据帧在交换网络中传输时…

Shell脚本-tee工具

一、前言在 Linux/Unix 系统中&#xff0c;tee 是一个非常实用的命令行工具&#xff0c;它可以帮助我们 同时将命令的输出打印到终端&#xff0c;并写入文件。这种“双路输出”机制在脚本调试、日志记录、自动化任务中非常有用。无论是做日志分析、脚本调试&#xff0c;还是编写…

走进Linux的世界:Linux基本指令(三)

嘿&#xff0c;各位技术潮人&#xff01;好久不见甚是想念。生活就像一场奇妙冒险&#xff0c;而编程就是那把超酷的万能钥匙。此刻&#xff0c;阳光洒在键盘上&#xff0c;灵感在指尖跳跃&#xff0c;让我们抛开一切束缚&#xff0c;给平淡日子加点料&#xff0c;注入满满的pa…

跨域详解与解决方案:从理论到实践的全面指南

目录 1. 跨域是什么?为什么它让人头秃? 为什么跨域问题让人抓狂? 跨域的本质 2. 跨域的罪魁祸首:同源策略与CORS 同源策略的来龙去脉 CORS:跨域的“通行证” 3. JSONP:古老但依然有用的跨域“黑科技” JSONP的原理 JSONP的优缺点 4. 代理服务器:跨域的“中间人…

深入详解:决策树在辅助诊断系统与临床决策支持中的应用及实现细节

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#,Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

【详细笔记】两类曲线积分转换

文章目录参考教程一两类曲线积分的联系参数方程曲线的切线方向余弦参考教程2两类曲线积分之间的关系物理意义解释证明思路参考教程一 3分钟帮你搞定两类曲线积分之间的联系&#xff08;弧长和坐标&#xff09; 两类曲线积分的联系 设平面曲线LLL上的第二类曲线积分∫LPdxQdy…

【成品设计】基于STM32F429的云端电子相册

V1《基于STM32F429的云端电子相册》 V1硬件框图&#xff1a;V1功能说明&#xff1a; 支持 softAP 配网。支持 HTTPS 客户端的 GET\POST 请求支持文件系统用于图片的存储。支持 LVGL 自定义 GUI。日历功能。STM32F429文件系统LVGLRGB LCD屏幕。屏幕尺寸480*480. 首次开机交互&am…