SpringBoot|第三章:springboot配置详解

《穿越SpringBoot 》 第三章-SpringBoot 的 配置 | 第1节- SpringBoot 的 yml文件配置 Spring Boot 中yaml 配置文件 前提: 借助:IntelliJ IDEA,Maven构建工具,以及基于SpringBoot 2.3.4。 官人如需使用 Maven 请阅读教程:Maven 构建工具的下载与安装 官人如需使用 IDEA 请阅读教程:IntelliJ IDEA 更多干货: 请参考Java学习资料:https://www.CJNB自行学习。 定义: Yaml是什么? Yaml是JSON的一个超集,是一种方便的定义层次配置数据的格式,结构层次上清晰明了,配置简单易读、易用。要想使用YA 阅读详情

基于springboot的约定优于配置的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动。但在大部分开发环境下,添加额外配置是无所避免的,比如自定义应用端口号(比较在机器比较少的情况下,一台机器还是需要部署多个应用的,当然利用docker的话,是可避免的,这是后话了)、mq的服务地址、缓存服务的服务地址、数据库的配置等,都或多或少的需要一些外部的配置项。

配置文件格式简要说明

springboot默认的全局配置文件名为application.properties或者application.yml(spring官方推荐使用的格式是.yml格式,目前官网都是实例都是使用yml格式进行配置讲解的),应用启动时会自动加载此文件,无需手动引入。除此之外还有一个bootstrap的全局文件,它的加载顺序在application配置文件之前,主要是用于在应用程序上下文的引导阶段,在后期讲解springCloudCofnig时,主要是利用此特性,进行配置文件的动态修改,在此不表,在通常情况下,此两个配置文件是没有差别的,所以一般上都只需要配置application即可。

自定义属性值

application.properties配置文件支持自定义属性的支持,比如

blog.address=https://blog.lqdev.cn

blog.author=oKong

然后可通过@Value("${blog.author}")的形式获取属性值。

@RestController

public class DemoController {

@Value("${blog.address}")

String address;

@Value("${blog.author}")

String author;

@Value("${blog.desc}")

String desc;

@RequestMapping("/")

public String demo() {

return desc;

}

}

这里提醒下,在填写一些默认的比如,数据库属性时,可使用alt+/的方式,IDE会自动显示提示,避免了手动嵌入属性值或者忘记属性的尴尬。

13467292-1547556430645c5c

关于自定义属性时,特别是一些公用包,会使用到属性值时,建议在创建additional-spring-configuration-metadata.json属性元文件,这样在使用上述快捷方式时,会进行提示,包括属性名和属性说明,这样也方便调用者询问属性名是啥。

13467292-81ae2d58d4270f85

相关configuration-metadata说明可查看:https://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html

属性引用

在配置文件中,各个属性参数可进行引用的,比如:

blog.address=https://blog.lqdev.cn

blog.author=oKong

blog.desc=${blog.author},${blog.address}

最后blog.desc的值即可:oKong,https://blog.lqdev.cn。利用此特性,并可实现一些特殊的功能。比如后期讲解spring cloud时,注册eurka注册中心的实例名时,并会使用类似如下配置,使得实例名一眼就知道哪台服务地址:

1

eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

这里需要注意,由于springboot在读取properties文件时,使用的是PropertiesPropertySourceLoader类进行读取,默认读取的编码是ISO 8859-1,故在默认的配置文件中使用中文时,会出现乱码,此时可以将中文转成Unicode编码或者使用yml配置格式(默认就支持utf-8),再不济可以将作为配置写入到一个自定义配置文件,利用@PropertySource注解的encoding属性指定编码

随机数

Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。

# 随机字符串

.blog.value=${random.value}

# 随机int

.blog.number=${random.int}

# 随机long

.blog.bignumber=${random.long}

# 10以内的随机数

.blog.test1=${random.int(10)}

# 1-20的随机数

.blog.test2=${random.int[1,20]}

自定义配置文件

在多数情况下,配置信息基本上都是放入application.properties文件中,但在一些场景下,比如某个配置项比较多时,为了分开存放,也可自定义配置文件,如my.properties。由于自定义的文件,系统不会自动加载,这个时候就需要手动引入了。 利用@PropertySource注解既可以引入配置文件,需要引入多个时,可使用@PropertySources设置数组,引入多个文件。

@SpringBootApplication

@PropertySource(value="classpath:my.properties",encoding="utf-8")

public class Chapter3Application {

public static void main(String[] args) {

SpringApplication.run(Chapter3Application.class, args);

}

}

配置绑定对象

虽然使用@Value()方式,能方便的引入自定义的属性值,但在多某个配置项属于某一配置时,希望对应到一个实体配置类中,springboot也提供了支持。利用@ConfigurationProperties属性,即可完成 my.properties配置文件:

config.code=code

config.name=趔趄的猿

config.hobby[0]=看电影

config.hobby[1]=旅游

实体类:

@Component

//@EnableConfigurationProperties(value= {Config.class})

@ConfigurationProperties(prefix="config")

@Data

public class Config {

String code;

String name;

List hobby;

}

这里可直接加入@Component使其在启动时被自动扫描到,或者使用@EnableConfigurationProperties注解注册此实体bean. 其次,在引入@ConfigurationProperties时,IDE会提示你引入spring-boot-configuration-processor依赖,前面提到,在自定义属性时,创建additional-spring-configuration-metadata.json可进行属性提示,而此依赖功能类似,会编译时自动生成spring-configuration-metadata.json文件,此文件主要给IDE使用,用于提示使用。添加后在配置文件点击属性时,会自动跳转到对应绑定的实体类中

13467292-f0b550dba7016be8

数组形式

配置了以下配置,然后利用List就能获取hobby的值了。

config.code=code

config.name=趔趄的猿

config.hobby[0]=看电影

config.hobby[1]=旅游

13467292-afb36633fb3a5efe

如果你现在在JAVA这条路上挣扎,也想在IT行业拿高薪,可以参加我们的训练营课程,选择最适合自己的课程学习,技术大牛亲授,7个月后,进入名企拿高薪。我们的课程内容有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,q群号为:835638062

注:加群要求

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

机械革命重装Win11详细教程 通过以上步骤,你可以在机械革命电脑上成功重装Windows 11。虽然整个过程可能看起来有些复杂,但只要你按照步骤逐一进行,就能够顺利完成安装并享受到全新的操作系统带来的便利和性能提升。希望本文能够帮助到你,如果你有任何问题或疑问,请随时联系我们的技术支持团队。 阅读详情

相关推荐

一文读懂GAN, pix2pix, CycleGAN和pix2pixHD

本文翻译、总结自朱俊伟的线上报告,主要讲了如何用机器学习生成图片。 来源:Games2018 Webinar 64期 :Siggraph 2018优秀博士论文报告 人员信息 主讲嘉宾 姓名:朱俊彦(Jun-Yan Zhu) 现状:麻省理工学院博士后(PostDoc at MIT),计算机科学与人工智能实验室(Computer Science and Artificial In...

gdymind的博客 6万+

Spring boot tomcat因为maxHttpHeaderSize配置导致启动请求一会OOM

背景 项目上线后,发现过段时间就会请求失败OOM。经过排除,哪怕请求一个空的接口都会OOM,请求分配内存失败。 原因 最后发现有次配置文件上传,从网上复制了一个配置maxHttpHeaderSize设了100M。 经过查看源码,是因为请求来了后,会先创建Http的Processor,然后将这个Processor缓存起来复用。 Processor会直接根据maxHttpHeaderSize来申请http的inputBuffer和outputbuffer。 那么就导致了创建了几个Processor后内存就直接满

xialonghua的专栏 2985

Kubernetes+EdgeX:构建企业级AI边缘推理平台

设备:工业摄像头(RTSP协议,输出1920x1080视频流);AI模型:YOLOv8训练的轴承裂纹检测模型(识别“裂纹”“正常”两种类型);目标:摄像头采集图像→EdgeX传输数据→K8s推理服务检测→结果反馈到报警器(HTTP协议)。Kubernetes+EdgeX的组合,为企业构建AI边缘推理平台提供了标准化、可扩展标准化:K8s的容器编排和EdgeX的设备管理,都是行业标准,避免“重复造轮子”;可扩展:支持从单边缘节点到 thousands of nodes 的规模,满足企业的增长需求;

AI算力网络与通信的博客 1344

SpringBoot | 第三章:springboot 配置详解

来源:oKong , blog.lqdev.cn/2018/07/14/springboot/chapter-third/   基于springboot的约定优于配置的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动。但在大部分开发环境下,添加额外配置是无所避免的,比如自定义应用端口号(比较在机器比较少的情况下,一台机器还是需要部署多个应用的,当然利用dock...

sunzhenhua0608的专栏 369

GD32F470 DSP库移植避坑指南:从CMSIS版本冲突到AC6工程配置

本文详细解析了在GD32F470平台上移植CMSIS-DSP库的完整流程与关键避坑点。针对CMSIS版本冲突、AC6编译器下的浮点ABI配置、DSP库源文件添加等核心难题,提供了经过验证的解决方案,帮助开发者高效完成移植,确保硬件FPU正常工作并优化性能。

data3的博客 532

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应

自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应 一般情况下,我们都是在 dialog 里面 放一个 list 控件,然后 用自己的类绑定自己的自绘对象,如同下面: 1.  在 dialog 里面 加一个 list 列表 2. 然后 绑定这个列表 哈哈...

mfreesky的专栏 2171

springboot添加request和response输出

package com.cyc.aop; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.S...

achen0001的专栏 2258

【Unity实战篇 】| 游戏中实现镂空遮罩效果【矩形、圆形镂空遮罩】

本文来写一下怎样在Unity中完成一个 镂空遮罩 的效果。 镂空遮罩 比较常用的有两种:矩形镂空遮罩、圆形镂空遮罩。 镂空遮罩 在游戏中常被当做新手引导必备的内容,可以给玩家更多不一样的体验。 下面就一起来看一下怎样做出这种效果吧!

努力前行,总会成为自己心中的那道光 1万+

Springboot之additional-spring-configuration-metadata.json自定义提示

简介 additional-spring-configuration-metadata.json、spring-configuration-metadata.json在springboot-starter官方项目或第三方starter项目中随处可见,那它起的作用是什么?让我们一起探讨一下。 官方文章 官方一篇文章很详细讲解了Configuration Metadata的作用。 有兴趣的小伙伴可以查看下(配置元数据)。 Configuration Metadata Appendix B. Conf

z69183787的专栏 1万+

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

算法如诗的博客 155

【25届数字IC秋招总结】面试经验13——豪威科技面试

25届数字ic面试记录———豪威科技

lalala0635的博客 364

springboot之additional-spring-configuration-metadata.json自定义提示

springboot之additional-spring-configuration-metadata.json自定义提示 简介 additional-spring-configuration-metadata.json、spring-configuration-metadata.json在springboot-starter官方项目或第三方starter项目中随处可见,那它起的作用是什...

2441

化工模拟与优化软件:Aspen HYSYS二次开发_(15).工业应用与项目管理

项目背景、目标和主要流程。

kkchenjj的博客 1131

【SpringBoot】SpringBoot源码解析第三章 SpringBoot的自动化配置

SpringBoot的自动化配置原理解析

qq_45797138的博客 1291

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot中pom.xml配置详解 第三章

在Spring Boot的pom.xml文件中,可以为不同的环境配置不同的参数和依赖。通过 profiles 的使用,你可以在构建项目时根据需要激活特定的配置,从而实现不同环境下的定制化配置。使用Maven命令时,您可以通过参数"-P"来激活不同的profile,这允许Spring Boot项目基于不同的profile进行多环境构建。元素用于定义项目的打包方式。默认情况下,它会出现在 pom.xml 的顶层元素中,通常设置为 “jar”,用于构建一个可执行的、包含所有依赖的 Fat JAR。

Mars 2405

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot | 第三章:springboot配置详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34390996的博客 190

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微信Windows版历史版本归档:安全下载、便携化与多版本并存指南

软件版本管理是数字化资产整理中常被忽视却至关重要的一环,尤其在面对频繁更新的桌面应用时,保留旧版安装包、实现多版本并存,能有效应对兼容性、资源占用与使用习惯的冲突。对于微信Windows版这类日常必备工具,官方仅提供最新版下载,用户若需回溯历史版本,必须掌握安全检索、数字签名校验与哈希值比对等基础方法,以确保文件来源可信。在此基础上,通过便携化改造(绿色版)与独立数据目录隔离,即可实现多个版本互不干扰地共存于同一台电脑,同时保留聊天记录与登录状态。版本选择需结合硬件配置与功能需求,例如在低配机器上使用老版本

weixin_34375251的博客 299

第三章SpringBoot配置文件

首先我们知道我们的程序是 指令 + 指令要处理的数据(变量,对象,数据库的记录…)假如我们所有的数据都是固定的情况下,那我们的程序无论允许多少次,结果都是一样的随着我们的软件规模开始变大,数据来源不在唯一(数据不一定是写死在程序中了)//数据写死了,执行多少才都不会变化 System . out . println("hello world");//由于引入了外部的数据,所以可能每次输出的结果不一样 Scanner sc = new Scanner(System . in);

一名在校大三学习JAVA 379

SpringBoot | 第三章:SpringBoot配置详解

前言 基于springboot的约定优于配置的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动。但在大部分开发环境下,添加额外配置是无所避免的,比如自定义应用端口号(比较在机器比较少的情况下,一台机器还是需要部署多个应用的,当然利用docker的话,是可避免的,这是后话了)、mq的服务地址、缓存服务的服务地址、数据库的配置等,都或多或少的需要一些外部的配置项。 ...

oKong | 趔趄的猿 547

第三章:SpringBoot配置(全局配置文件)

总目录:SpringBoot学习教程(一)SpringBoot使用的全局配置文件为:        • application.properties        • application.yml虽然后缀不一样,但是项目中有一个就可以了,yml格式比properties格式的简洁一些。这个文件的位置在配置文件放在src/main/resources目录或者类路径/config下。如图:默认是pr...

热爱生活 热爱编码 3954

springboot+jsp中文乱码_SpringBoot|第三章:springboot配置详解

基于springboot的约定优于配置的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动。但在大部分开发环境下,添加额外配置是无所避免的,比如自定义应用端口号(比较在机器比较少的情况下,一台机器还是需要部署多个应用的,当然利用docker的话,是可避免的,这是后话了)、mq的服务地址、缓存服务的服务地址、数据库的配置等,都或多或少的需要一些外部的配置项。配置文件格式简要...

weixin_39611037的博客 212

第三章:SpringBoot配置深入-5. profile配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34216107的博客 167

VCD转SAIF功耗分析实战:翻转率文件精准生成与验证

翻转率(Toggle Rate)是数字电路动态功耗建模的核心输入,其本质是信号在单位时间内的有效开关次数,直接参与功耗公式Power = α × C × V² × f × T中的频率项计算。准确获取翻转率依赖VCD(波形事件日志)到SAIF(结构化活动描述)的语义转换,而非简单格式迁移;该过程需严格对齐仿真时间窗口、映射RTL与网表信号路径、区分时钟/复位/数据信号类型。技术价值在于支撑前端功耗预估、时钟门控优化与PPA协同收敛;典型应用于SoC模块级功耗分析、低功耗IP验证及FPGA原型功耗对标。本文聚焦

weixin_33850890的博客 326

Java:SpringBoot系列——第三章 自动配置的原理分析

SpringBoot自动配置的原理分析

chenyouchang的博客 289
上一篇: SpringBoot | 第二章:lombok 介绍及简单使用
下一篇: SpringBoot|第四章:日志管理
普通网友
博客等级 码龄8年 55粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值