java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot修改配置加载顺序

SpringBoot修改yml配置和加载顺序规则的示例详解

作者:VipSoft

这篇文章主要为大家详细介绍了SpringBoot如何修改yml配置和加载顺序规则,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

Spring Boot 的配置加载顺序规则

Spring Boot 有非常明确的配置加载顺序和优先级规则:

1. 格式优先级高于Profile

对于相同名称的配置文件文件格式的优先级是固定的,与加载顺序无关:

.properties > .yml > .yaml

也就是说,如果同时存在 application-vipsoft.propertiesapplication-vipsoft.yml

2. 配置加载顺序

Spring Boot 按以下顺序加载配置(后面的覆盖前面的):

配置方案

有时候运行好多年的系统,突然要改个配置。新的程序可能会产生BUG,那如何更新已有 yml 的值,有如下操作

参数形式

适合改动较少的情况

echo on
REM 后续命令使用的是:UTF-8编码
echo chcp 65001

title HIS API DEV 8090

"%JAVA_HOME%\bin\java" -Dloader.path=D:\Software\JavaLib -Dfile.encoding=UTF-8 -jar his-web-1.0.0.jar --server.port=8090 --spring.profiles.active=vipsoft

pause

使用配置文件(推荐,最清晰、最易维护)

这是Spring Boot应用的首选方式。将那些不常改变的参数(尤其是数据库连接、API地址等)移动到配置文件中。

1.创建/修改 application-vipsoft.yml 文件

由于您已经指定了 --spring.profiles.active=vipsoft,Spring Boot会自动加载 application-vipsoft.yml。将这个文件放在与您的jar包同一目录下

server:
  port: 22588

his:
  api-url: http://192.168.0.1/webservice/service.asmx?wsdl

spring:
  datasource:
    his:
      url: http://192.168.0.1/webservice/service.asmx?wsdl
      username: username
      password: pwd

2.简化后的启动命令

现在,启动命令变得非常干净,只需要关注核心的JVM参数和配置文件激活。

echo on
REM 后续命令使用的是:UTF-8编码
echo chcp 65001

title HIS API DEV 8090

"%JAVA_HOME%\bin\java" -Dloader.path=D:\Software\JavaLib -Dfile.encoding=UTF-8 -jar his-web-1.0.0.jar --server.port=8090 --spring.profiles.active=vipsoft

pause

优点:

使用Shell脚本或Batch文件(Windows批处理)

对于Windows,创建一个 startup.bat 文件。

@echo off
title HIS API DEV 8090

set JAVA_OPTS=-Dloader.path=D:\Software\JavaLib -Dfile.encoding=UTF-8
set SPRING_OPTS=--spring.profiles.active=vipsoft --server.port=8090
set HIS_OPTS=--his.api-url=http://192.168.0.1/webservice/service.asmx?wsdl
set DS_OPTS=--spring.datasource.his.url="jdbc:sqlserver://192.168.0.2:1433;DatabaseName=XXX" --spring.datasource.his.username=username --spring.datasource.his.password=pwd

echo Starting application...
"%JAVA_HOME%\bin\java" %JAVA_OPTS% -jar his-web-1.0.0.jar %SPRING_OPTS% %HIS_OPTS% %DS_OPTS%

pause

优点:

使用环境变量

Spring Boot可以从环境变量中读取配置,这是一种非常云原生的做法。

1.设置环境变量(可以在批处理文件中设置,也可以在系统高级设置中设置)

set SPRING_DATASOURCE_HIS_URL=jdbc:sqlserver://192.168.0.2:1433;DatabaseName=XXX
set SPRING_DATASOURCE_HIS_USERNAME=username
set SPRING_DATASOURCE_HIS_PASSWORD=pwd
set HIS_API_URL=http://192.168.0.1/webservice/service.asmx?wsdl

注意:Spring Boot将大写环境变量中的 _ 视为配置中的 .,例如 SPRING_DATASOURCE_HIS_URL 对应 spring.datasource.his.url。

2. 启动命令

echo on
REM 后续命令使用的是:UTF-8编码
echo chcp 65001

title HIS API DEV 8090

"%JAVA_HOME%\bin\java" -Dloader.path=D:\Software\JavaLib -Dfile.encoding=UTF-8 -jar his-web-1.0.0.jar --server.port=8090 --spring.profiles.active=vipsoft

pause

优点:

最佳实践建议

最终建议:检查jar包内的配置格式,然后在外部使用相同格式的配置文件,这样最清晰易懂。

到此这篇关于SpringBoot修改yml配置和加载顺序规则的示例详解的文章就介绍到这了,更多相关SpringBoot修改配置加载顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文