SpringBoot——配置文件的分类

news2024/11/27 13:18:05

简单介绍:

在之前我们写配置文件的时候,我们直接在项目中的resources下面编写的配置文件,其实除了在这个路径下编写配置文件,还可以在其他的地方编写配置文件,并且不同位置的配置文件在启动的时候的优先级也是不一样的。

1、在resources下编写配置文件:

这种方式是我们最常见的方式,但是在所有的配置文件的优先级中,这种方式是最低的,一般这种方式是在我们开发阶段中使用的配置文件编写方式。

我们在resources文件夹下的配置文件中编写一个配置,将服务器的启动端口设置为81端口,然后我们启动服务器: 

这里服务器端口的默认值8080就被我们自己编写的配置中的81给替换了。

2、在resources的config目录下的配置文件 

在读取配置文件的时候,其实还有一层隐形的目录,就是config目录,他会先在resources的config目录下寻找对应的配置文件,如果没有,再从resources文件夹下开始找,也就是说,如果我们再resources下面创建一个config文件夹,并在里面编写配置文件的话,他会覆盖掉我们直接在resources中编写的配置文件:

我们这次在resources下面的config文件夹中创建配置文件,然后编写一个配置将服务器的端口配置成82端口,这次我们重启服务器,按照我们的猜想,他启动的端口应该是82端口:

 看到他确实是在82端口启动了端口,说明resources下的config文件夹中的配置文件的优先级大于直接在resources下写的配置文件。

3、和Jar包同级的配置文件

在介绍这个配置文件之前,我们先介绍一下打包方式,我们常规的打包方式有两种,一个是war包,一个是jar包,前者是用于web程序的压缩包,jar包是类归档文件,我们的SpringBoot如果要打包的话就需要打包成一个jar包,具体操作步骤如下:

我们使用IDEA工具帮我们完成打包的工作:

我们点击侧边栏中的Maven图标,一开始我们会看到有三个下拉菜单,第一个叫生命周期,第二个是插件,第三个是依赖项,那么IDEA提供了Maven中对应生命周期的按钮,我们直接点击就可以了,这里唯一需要注意的一点就是我们在打包的时候,要点击生命周期里面的package,千万不要点击插件里面的jar,虽然两者都能把项目打包成jar包,但是效果是完全不一样的。

如果你出现了一下的报错信息:

 

【没有主清单属性】,这就表示在你打包的过程中的步骤出错了,我们重新一次就可以了,记住是双击生命周期里面的package:

然后我们就可以在项目中的target中看到我们打包好的jar包:

 

为了方便操作,我们直接把这个jar包复制到D盘根目录下,然后我们直接启动这个jar包:

在黑窗口中使用命令行的方式启动:java -jar 打包好的jar包。这样就启动了我们的jar包,主要是为了脱离我们的IDEA工具,我们肯定不能每次都依靠IDEA启动,毕竟我们肯定不会在服务器上安装一个IDEA的。

然后就开始我们的主要内容,观察我们刚才启动的项目,我们的端口号是不是跟刚才一样还是在82端口启动的,现在我们在这个jar包同级目录下,创建一个配置文件,并且把端口号修改成83:

注意我们配置文件的位置,以及我们在配置文件中编写的内容,然后我们再次启动我们的jar包:

 

这次的端口就变成了我们在jar包同级文件夹下的配置文件中的配置值,那么也就是说,与jar包同级的配置文件优先级大于resources下的config文件夹中的配置文件。

4、与jar包同级的config中的配置文件 

和之前一样,如果我们在jar包的同级目录下创建一个config文件夹,那么这个文件夹中的配置文件的优先级肯定是最高的:

 

总结: 

在我们的配置文件的等级划分中,优先级由低到高分别是:resources中的配置文件<resources中的config中的配置文件<与jar包同级的配置文件<与jar包同级的config文件夹中的配置文件

那么为什么要分这么多的等级呢?

我们在做项目的时候,开发环境和实际的部署环境可能有很大的出入,或者是在部署环境中的一些敏感信息不希望开发人员知道,所以开发人员就在自己的模拟环境中使用一套配置文件进行开发。然后更高一级的,就留给运维的人做测试,再高的就交给其他的人这样就有了配置文件的等级划分,以及优先级高的配置文件会直接覆盖低级的配置文件,防止出错。

一般来讲,优先级低的两个位置用于在项目验收阶段做整体的调控,更高的两个位置用于项目在上线的时候做调控。

一些有关打包时候的理论知识:

在我们之前打包的时候,说过如果我们使用了错误的打包方式,会导致我们的在直接启动jar包的时候无法启动,要用正确的maven的方式去打包才行,那么这两种打包出来的jar包有何区别呢?

在我们使用Maven的生命周期的时候,他会调用我们的打包插件,这个插件是我们在创建SPringBoot项目的时候他自己帮我们导入的,就是这个东西:

那么他干了什么呢,首先,他为了能让你的项目单独的跑起来,他把你项目中用到的jar包全都给你连带着一起打包了,所以如果你去看一下刚才我们打出来的jar包的属性的话,你会发现他比较大,就是因为里面有很多的jar包。

除了jar包,里面还有一个工具类,这个工具类的作用是帮我们的程序单独运行用的,也就是说,这个jar包除了你自己写的代码占很少的一一部分,其他的很大的部分其实都是为了让你的程序可以单独运行而放置的依赖项。

那么之后这样,一个完整的可独立运行程序才算完整,就可以在任何的安装了java的平台上运行,比如Linxu环境的服务器上,或者是Win的服务器,这就是Java的跨平台特性了。

临时属性: 

除了在配置文件中配置属性,我们也可以使用临时属性的方式,在启动项目的时候配置一些属性,让这些属性在单次启动的临时生效:

我们在启动的时候添加这样的参数,参数的写法是有要求的,参数前面要用-- 两个横线,多个参数之间用空格隔开,然后是k-v的写法,然后我们启动项目,这样项目就会在85端口启动:

 

临时属性的优先级很高,所以如果你想临时覆盖一些属性也可以使用这种方式。

除了在命令行中使用临时属性,在IDEA中也是可以使用临时属性的:

 

我们点击右上角的运行选项,然后点击编辑配置:

在这里可以添加运行的参数,如果你使用的IDEA版本太高没有这个框框,那么你需要点击一下右上方的蓝色字“修改选项” :

点击程序实参然后添加上去就可以了。

那么参数是如何传递的呢?我们打开引导类:

 看到这个main方法的ages选项了吗,我们刚才配置的环境变量的信息都会封装到这里面,然后SpringBoot的方法用这个参数当做方法的参数,这样就将我们配置的临时属性传递进去了。你要是不信你可以输出一下试一试:

 我们打印一下agrs变量里面的信息:

第一行就输出了我们之前配置的程序实参的内容,这是一个固定的写法,并不是SpringBoot的特特性,也就是说我们以后如果遇到了需要些配置项,或者写命令参数的地方,也可以使用这种方法进行传递。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Srping注解之@Async:SpringBoot 实现异步调用

目录 1&#xff1a;前言 2&#xff1a;如何创建线程池 3&#xff1a;自定义线程池 1&#xff1a;前言 在日常开发过程中&#xff0c;会遇到一些需求是和主业务逻辑低耦合的&#xff0c;不要求和主业务逻辑同步进行&#xff0c;比如记录日志信息、发送消息通知电子邮件、生成…

Elasticsearch:使用 count API 来获得所有文档的个数

在我开始使用 Elasticsearch 的时候&#xff0c;我希望获得给定查询的文档总数。比如我们想对数据进行分页显示。从 Elasticsearch 7.0之后&#xff0c;为了提高搜索的性能&#xff0c;在 hits 字段中返回的文档数有时不是最精确的数值。Elasticsearch 限制了最多的数值为10000…

【开发者指南】如何在MyEclipse中编辑HTML或JSP文件?(一)

MyEclipse v2022.1.0正式版下载 如果您有HTML或JSP文件要编辑&#xff0c;这里将介绍如何编辑。查找以下信息&#xff1a; 编辑源代码大纲和属性视图参数页面 该功能在MyEclipse中是可用的。 一、HTML / JSP编辑器 要编辑HTML或JSP文件&#xff0c;请执行以下操作当中的一…

IPWorks BLE 2022 .NET Edition 22.0.8 Crack

IPWorks BLE 2022 .NET是一个蓝牙低功耗组件库&#xff0c;提供对 BLE 操作的直接访问。IPWorks BLE 组件提供简单的服务发现和对支持 BLE 的设备的访问。 蓝牙库 低功耗蓝牙组件 IPWorks BLE 包括一组功能强大的组件&#xff0c;用于将低功耗蓝牙通信功能集成到 Web、桌面和移…

Liunx 套接字编程(1)UDP协议的操作且实现一个UDP通信客户端

1.套接字编程 主要讲解的就是如何编写一个网络通信程序 1.网络通信的数据中都会包含一个完整的五元组: sip,sport,dip,dport,protocol(源端IP&#xff0c;源端端口&#xff0c;对端IP&#xff0c;对端端口&#xff0c;协议) 五元组完整的描述了数据从哪来&#xff0c;到哪去&am…

平抑风电波动的电-氢混合储能容量优化配置(matlab代码)

目录 1 主要内容 2 部分程序 3 程序结果 4 程序链接 1 主要内容 该程序部分复现电机文章《平抑风电波动的电-氢混合储能容量优化配置》&#xff0c;针对电-氢混合系统协同平抑接入新型电力系统的新能源波动问题&#xff0c;提出考虑碱性电解槽运行特性的电-氢混合储能容量…

D. Array Restoration(st表 O(1)查询区间最值)

Problem - D - Codeforces 给定一个由n个整数组成的初始数组a&#xff0c;位置从1到n编号。 对该数组执行q次查询&#xff0c;每次查询选择一个区间[li, ri]&#xff08;1≤li≤ri≤n&#xff09;&#xff0c;并将该区间内所有元素的值都改为i。查询的顺序不能更改&#xff0c…

企业多个文件存储系统并行使用,IT人员如何统一高效管理?

文件存储系统在企业内部应用广泛&#xff0c;各个企业使用习惯各不相同。很多企业在业务开展中&#xff0c;由于内部业务结构复杂、部门间文件存储习惯差异化、需要与外部合作伙伴进行数据文件交换等原因&#xff0c;会出现企业内部多个文件存储系统并行使用的情况。 对于IT技术…

IPB60R950C6-ASEMI代理英飞凌高压MOS管IPB60R950C6

编辑&#xff1a;ll IPB60R950C6-ASEMI代理英飞凌高压MOS管IPB60R950C6 型号&#xff1a;IPB60R950C6 品牌&#xff1a;Infineon(英飞凌) 封装&#xff1a;TO-263 最大漏源电流&#xff1a;12A 漏源击穿电压&#xff1a;600V RDS&#xff08;ON&#xff09;Max&#xff…

关于全志T113开发板接7寸LCD屏幕显示异常问题的解决方案

在入手全志T113之后&#xff0c;第一时间移植好了之前6ull平台的rootfs。但是在测试QT的过程中发现屏幕最右侧有一部分显示不正常&#xff0c;经过初步推测应该是RGB行场同步时序有问题。本以为在设备树里面稍作修改之后就能OK&#xff0c;但是居然前前后后一共花了至少三个星期…

期刊介绍|骨科老牌期刊,无版面费,审稿极速,毕业不二之选!

今天给大家介绍一本中药方面的期刊&#xff1a;JOURNAL OF ORTHOPAEDIC RESEARCH 一、基本信息 1、期刊名称&#xff1a;JOURNAL OF ORTHOPAEDIC RESEARCH&#xff1b; 2、期刊ISSN: 0736-0266&#xff1b; 3、研究方向&#xff1a;医学-整形外科&#xff1b; 4、出版社&#x…

AI怎么把游戏变好玩?米哈游出手了

《原神》发布两年半后&#xff0c;游戏新贵米哈游终于出新&#xff0c;上线了《崩坏:星穹铁道》。新游戏的一大亮点是内置了一个“图生图”的AIGC工具&#xff0c;用户可上传任何图片&#xff0c;生成对应风格的游戏角色“三月七”。 广大玩家脑洞大开&#xff0c;短短一周时间…

专业的图像编辑软件Affinity Photo 2.04版本在win10系统的下载与安装配置教程

目录 前言一、Affinity Photo安装二、使用配置总结 前言 Affinity Photo 是一款专业的图像编辑软件&#xff0c;提供了很多强大的工具和功能。 一些常用工具的介绍&#xff1a; 选择工具 ——矩形选择工具&#xff1a;用于选择矩形区域。 ——椭圆选择工具&#xff1a;用于选…

Android 网络编程基础

Android 网络编程是一个重要的开发技能&#xff0c;可以让我们的应用程序更加丰富、实用。需要开发者根据实际需求选择合适的网络通信方式&#xff0c;并结合安全协议和数据传输加密算法等措施&#xff0c;以保证数据传输的安全性和可靠性。 网络协议 在 Android 网络编程中&a…

虚拟环境中的 CPU 优化技巧

近年来&#xff0c;虚拟化已成为管理计算资源的主流方式&#xff0c;使用户能够在一台机器上运行多个操作系统和应用程序。虚拟化虽然带来了许多好处&#xff0c;例如更好的资源利用和更大的灵活性&#xff0c;但在优化CPU性能方面也带来了挑战。 在本文中&#xff0c;我们将探…

系统分析师:五、系统配置与性能评价

目录 一、性能指标 二、阿姆达尔解决方案 三、性能评价方法 一、性能指标 性能指标总体如下&#xff1a; 主频&#xff1a;也称时钟频率&#xff0c;主频越高&#xff0c;意味着CPU工作速度越快。它的倒数就是时钟周期。 CPI&#xff1a;每条指令执行锁需要的时钟周期数。 …

那些我收藏多年和偷摸使用的工具~~~

作为一个见到好东西&#xff0c;不管有没有用先收藏的我来说&#xff0c;本期活动实在是太有必要写一篇博客了 目录 展示我的收藏癖生活类收藏学习类收藏工具类收藏谷歌插件类收藏 工具推荐效率工具sublime 文件转换工具text转MarkdownMarkdown-Weixin[Cmd Markdown 编辑阅读器…

算法篇——动态规划大集合(js版)

509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n…

计算机毕业论文选题推荐|软件工程|系列六

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)的研发部署管理…

正视架构设计的重要作用

要讨论软件架构设计在软件开发中的重要作用&#xff0c;首先让我们来了解一下目前国内软件的开发现状。   总的来说&#xff0c;国内的多数企业仍然是采用“瀑布模型”作为软件开发过程的主要模型。虽然在采用瀑布模型的同时可能会引入原型法以及诸如MSF等其它软件开发方法与…