96SEO 2026-02-20 01:22 17
课程名Java内容/作用知识点/设计/实验/作业/练习学习SpringBoot运维中的高级配置SpringBoot运维中的高级配置1.

关于配置在之前讲过一部分之前的配置总体上来说就是让各位小伙伴掌握配置的格式。
比如配置文件如何写啊写好的数据如何读取啊都是基础的语法级知识。
在后面的学习中就要集中在配置的应用这个方面了下面就开始配置高级相关内容的第一部分学习为什么说第一部分因为在实际开发实用中还有对应的配置高级知识要进行学习。
目前我们的程序包打好了可以发布了。
但是程序包打好以后里面的配置都已经是固定的了比如配置了服务器的端口是8080。
如果我要启动项目发现当前我的服务器上已经有应用启动起来并且占用了8080端口这个时候就尴尬了。
难道要重新把打包好的程序修改一下吗比如我要把打包好的程序启动端口改成80。
SpringBoot提供了灵活的配置方式如果你发现你的项目中有个别属性需要重新配置可以使用临时属性的方式快速修改某些配置。
方法也特别简单在启动的时候添加上对应参数就可以了。
上面的命令是启动SpringBoot程序包的命令在命令输入完毕后空一格然后输入两个-号。
下面按照属性名属性值的形式添加对应参数就可以了。
记得这里的格式不是yaml中的书写格式当属性存在多级名称时中间使用点分隔和properties文件中的属性格式完全相同。
如果你发现要修改的属性不止一个可以按照上述格式继续写属性与属性之间使用空格分隔。
现在我们的程序配置受两个地方控制了第一配置文件第二临时属性。
并且我们发现临时属性的加载优先级要高于配置文件的。
那是否还有其他的配置方式呢其实是有的而且还不少打开官方文档中对应的内容就可以查看配置读取的优先顺序。
地址https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
我们可以看到居然有14种配置的位置而我们现在使用的是这里面的2个。
第3条Config
arguments说的就是使用命令行临时参数。
而这14种配置的顺序就是SpringBoot加载配置的顺序言外之意命令行临时属性比配置文件的加载优先级高所以这个列表上面的优先级低下面的优先级高。
其实这个东西不用背的你就记得一点你最终要什么效果你自己是知道的不管这个顺序是怎么个高低排序开发时一定要配置成你要的顺序为准。
这个顺序只是在你想不明白问题的时候帮助你分析罢了。
比如你现在加载了一个user.name属性。
结果你发现出来的结果和你想的不一样那肯定是别的优先级比你高的属性覆盖你的配置属性了那你就可以看着这个顺序挨个排查。
哪个位置有可能覆盖了你的属性。
看到小伙伴学习之前内容的时候问这个问题了就是这个原因造成的。
在yaml中配置了user.name属性值然后读取出来的时候居然不是自己的配置值因为在系统属性中有一个属性叫做user.name两个相互冲突了。
而系统属性的加载优先顺序在上面这个列表中是5号高于3号所以SpringBoot最终会加载系统配置属性user.name。
使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性临时属性添加方式java
–-属性名值多个临时属性之间使用空格分隔临时属性必须是当前boot工程支持的属性否则设置无效
临时使用目前是有了但是上线的时候通过命令行输入的临时属性必须是正确的啊那这些属性配置值我们必须在开发环境中测试好才行。
下面说一下开发环境中如何使用临时属性其实就是Idea界面下如何操作了。
打开SpringBoot引导类的运行界面在里面找到配置项。
其中Program
arguments对应的位置就是添加临时属性的可以加几个试试效果。
做到这里其实可以产生一个思考了如果对java编程熟悉的小伙伴应该知道我们运行main方法的时候如果想使用main方法的参数也就是下面的args参数就是在上面这个位置添加的参数。
原来是这样通过这个args就可以获取到参数。
再来看我们的引导类是如何书写的
{SpringApplication.run(SSMPApplication.class,args);
这个args参数居然传递给了run方法看来在Idea中配置的临时参数就是通过这个位置传递到我们的程序中的。
言外之意这里如果不用这个args是不是就断开了外部传递临时属性的入口呢是这样的我们可以使用下面的调用方式这样外部临时属性就无法进入到SpringBoot程序中了。
{SpringApplication.run(SSMPApplication.class);
或者还可以使用如下格式来玩这个操作就是将配置不写在配置文件中直接写成一个字符串数组传递给程序入口。
当然这种做法并没有什么实际开发意义。
--server.port8082;SpringApplication.run(SSMPApplication.class,
启动SpringBoot程序时可以选择是否使用命令行属性为SpringBoot程序传递启动属性
现在使用临时属性可以在启动项目前临时更改配置了但是新的问题又出来了。
临时属性好用是好用就是写的多了会很麻烦。
比如我现在有个需求上线的时候使用临时属性配置20个值这下可麻烦了能不能搞得简单点集中管理一下呢比如说搞个文件加载指定文件还真可以。
怎么做呢咱们下一节再说。
SpringBoot提供了配置文件和临时属性的方式来对程序进行配置。
前面一直说的是临时属性这一节要说说配置文件了。
其实这个配置文件我们一直在使用只不过我们用的是SpringBoot提供的4级配置文件中的其中一个级别。
4个级别分别是
类路径下配置文件一直使用的是这个也就是resources下配置文件程序包所在中config目录下配置文件
好复杂一个一个说。
其实上述4种文件是提供给你了4种配置文件书写的位置功能都是一样的都是做配置的。
那大家关心的就是差别了没错就是因为位置不同产生了差异。
总体上来说4种配置文件如果都存在的话有一个优先级的问题说白了就是加入4个文件我都有里面都有一样的配置谁生效的问题。
上面4个文件的加载优先顺序为
application.ymlclasspathconfig/application.ymlclasspathapplication.yml
场景A你作为一个开发者你做程序的时候为了方便自己写代码配置的数据库肯定是连接你自己本机的咱们使用4这个级别也就是之前一直用的application.yml。
场景B现在项目开发到了一个阶段要联调测试了连接的数据库是测试服务器的数据库肯定要换一组配置吧。
你可以选择把你之前的文件中的内容都改了目前还不麻烦。
场景C测试完了一切OK。
你继续写你的代码你发现你原来写的配置文件被改成测试服务器的内容了你要再改回来。
现在明白了不场景B中把你的内容都改掉了你现在要重新改回来以后呢改来改去吗
解决方案很简单用上面的3这个级别的配置文件就可以快速解决这个问题再写一个配置就行了。
两个配置文件共存因为config目录中的配置加载优先级比你的高所以配置项如果和级别4里面的内容相同就覆盖了这样是不是很简单
级别1和2什么时候使用呢程序打包以后就要用这个级别了管你程序里面配置写的是什么我的级别高可以轻松覆盖你就不用考虑这些配置冲突的问题了。
项目类路径配置文件服务于开发人员本机开发与测试项目类路径config中配置文件服务于运维经理整体调控
之前咱们做配置使用的配置文件都是application.yml其实这个文件也是可以改名字的这样方便维护。
比如我2023年12月1日搞活动走了一组配置2023年12月10日活动取消恢复原始配置这个时候只需要重新更换一下配置文件就可以了。
但是你总不能在原始配置文件上修改吧不然搞完活动以后活动的配置就留不下来了不利于维护。
使用的属性一个是spring.config.name另一个是spring.config.location这个一定要区别清楚。
我们现在研究的都是SpringBoot单体项目就是单服务器版本。
其实企业开发现在更多的是使用基于SpringCloud技术的多服务器项目。
这种配置方式和我们现在学习的完全不一样所有的服务器将不再设置自己的配置文件而是通过配置中心获取配置动态加载配置信息。
为什么这样做集中管理。
配置文件可以修改名称通过启动参数设定配置文件可以修改路径通过启动参数设定微服务开发中配置文件通过配置中心进行设置
往期专栏Java全栈开发数据结构与算法计算机组成原理操作系统数据库系统物联网控制原理与技术
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback