SpringBoot不同环境动态加载不同配置文件

2023-11-03

        在平常开发完成后,需要针对不同的环境进行不同的配置文件的选择,之前是建立多个配置文件,然后指定某一个配置文件使用,在进行部署的时候可以使用jar启动命令传参数的办法指定环境,但这样还不够通用,这里讲述一个根据环境变量自动加载不同配置文件的办法。

        在resource下新建application.yml,application-dev.yml,application-prod.yml三个配置文件:

application.yml:

spring:
  profiles:
    active: ${env}

application-dev.yml:

server:
  port: 8080

application-prod.yml:

server:
  port: 8081

        可以看到application.yml中,之前应该是写作:

spring:
  profiles:
    active: dev

        active后面根据不同环境手动指定,现在是使用获取变量的方法:${env}

        我在windows机器上新建两个环境变量,env和env1:

         新建完成后需要重启电脑。

        然后编写一个controller:

@RestController
@RequestMapping("/hello")
public class Hello {
    @GetMapping(path="/hello",produces="application/json")
    public String hello(){
        return "hello";
    }
}

        编写SpringBoot启动类:

@SpringBootApplication
public class Application{

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

        这里我们可以知道在env环境下启动8080,在env1下启动8081,如果是在不同的服务器上,直接可以设置一个同样的环境变量名,这样程序就通用了,现在我们试一下:

        可以看到控制台输出激活的环境是dev,端口是8080,浏览器访问:

 

        application.yml中修改为${dev1},然后再测试:

        可以看到使用的prod,端口是8081,浏览器访问:

         在application.yml中,还可以配置成当环境变量不存在时使用某个配置,比如我这里配置当env这个环境变量名不存在时使用dev配置:

spring:
  profiles:
    active: ${env:dev}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot不同环境动态加载不同配置文件 的相关文章

  • RAC安装与维护遇到的几个问题

    author skatetime 2009 05 26 rac安装还是比较顺利的 弄了一天 下面是我在安装和使用中遇到的问题 参考文档 http www oracle com technology pub articles hunter r
  • prisma 开发遇到https://xxx failed, reason: read ECONNRESET

    在使用nodejs prisma 开发时使用如下命令遇到错误 npx prisma db pull 设置proxy和https proxy问题依旧 最后使用 f 参数解决问题 npx prisma db pull f
  • ngModel:numfmt

    angularJS 报 ngModel numfmt angularJS 前台报错 Error ngModel numfmt Model is not of type number 错误 ngModel numfmt模型的类型是 numbe
  • PMD规则

    Design Rules UseSingleton If you have a class that has nothing but static methods consider making it a Singleton Note th
  • Unity常见问题集(待续)

    1 error CS0101 The namespace global already cont 分析 关于global 错误 我们不能打开两个同一名称的scripts在你的工程里 解决 如果在你的工程里有另一个 Activate Trig

随机推荐

  • 傅里叶变换:周期、非周期 与连续、离散

    也是之前总结的 但是感觉很重要 分享出来 也方便自己不带本子的时候能快速找到 傅里叶变化过程中 在两个域 周期和非周期 连续和离散问题
  • chatGPT本地部署

    chatGPT是一种使用自然语言生成 NLG 技术的聊天机器人 可以使用生成对话模型 GPT 训练出来的模型来回答用户的提问或对话 要在本地部署chatGPT 您需要 安装Python环境 并使用pip安装chatGPT所需的依赖包 下载并
  • spring boot 自动构造模拟数据

    spring boot 自动构造模拟数据 引言 Spring boot代码 实体类对象 pom xml 控制器代码 Swagger测试效果 jar包下载地址 引言 现如今基于微服务架构技术开发的项目 一般会采用前后端分离的模式 该模式的好处
  • #3文献学习总结--边缘计算资源分配与任务调度优化

    文献 边缘计算资源分配与任务调度优化综述 1 系统模型 云 边 端 第 1 层是物联网层 传感器 处理器根据应用需求感知 测量和收集原始数据 在本地处理大量数据或将其上传至计算节点 第 2 层是边缘计算层 位于互联网边缘 靠近数据源 边缘计
  • TensorFlow Seq2Seq Model笔记

    0 tf跑起来一直没有用GPU 尴尬 跑起来发现GPU没用起来 CPU满了 发现装错了 应该装tensorflow gpu 代码测试是否用的是GPU https stackoverflow com questions 38009682 ho
  • 正确选择云服务器的带宽教程

    由于云服务器具有弹性的扩容机制 安全的云端集群分布式存储等 云服务器的优势逐渐凸现出来 我们越来越多的人开始选择云服务器 那么如何选择云服务器配置呢 怎样的云服务器配置才能不浪费呢 计算机数据的最小单位是bit 称之为位 其他还有B KB
  • 1114 计算营业额

    题目描述 编程统计营业员一天的营业额 输入要求 输入若干个数据代表交易金额 由于营业员一天完成的交易次数是不确定的 因此最后附加输入一笔0作为交易金额已全部输入结束的标志 输出要求 输出一天的营业额 保留2位小数 输入样例 100 5 12
  • Cocos Creator3D:发布到 Web 平台

    推荐 将 NSDT场景编辑器 加入你的3D工具链 3D工具集 NSDT简石数字孪生 发布到 Web 平台 打开主菜单的 项目 gt 构建发布 打开构建发布面板 Cocos Creator 3D 提供了两种 Web 平台的页面模板 可以通过
  • 虚拟机中安装Virtualbox,嵌套的虚拟机不能运行64位系统

    https www quora com Can I install Virtualbox in a virtual machine Here is a previous question on Quora about it Is it po
  • 机器学习中,不平衡样本多分类评估指标采用哪些?准确率很高,召回率在少数样本上较低。

    Macro F1 这个指标计算每一类的F1 score然后求算术平均 如果模型在小样本上表现不好 小样本的F1会极大程度上拉低Macro F1 除了F1之外还有Macro recall Macro precision 计算原理是一样的 另
  • 区块链在中国(2):PBFT算法

    上一张我们从分布式系统的角度简单叙述了一下 IBM HyperLedger fabric 的一些基本概念 架构和协议信息 其中最为核心的部分就是共识算法 consensus plugin fabric推荐并实现的就是PBFT这一经典算法 B
  • ListView的性能优化之convertView和viewHolder

    ListView优化大致从以下几个角度 1 复用已经生成的convertView 2 添加viewHolder类 3 缓存数据 图片缓存 4 分页加载 一 复用convertView 首先讲下ListView的原理 ListView中的每一
  • Vue 集成mock.js

    mock js 官网地址 mockjs com mockjs是用来模拟产生一些虚拟的数据 可以让前端在后端接口还没有开发出来时独立开发 我们可以使用真实的url mockjs可以拦截ajax请求 返回设定好的数据 使用方式 这里主要讨论在v
  • com.mysql.jdbc.Driver错误解决方法

    把mysql的驱动包放在web工程下的WEB INF下的lib目录下即可
  • C++ 时间

    精确到秒的 std time 为了获得系统当前时间 目前 C 标准库里面给出的方法是 std time 它返回的结构体是 std time t 这个方法很方便很通用 但它有一些局限 它是精确到秒的 如果您需要更高精度的时间 比如说您需要精确
  • KCP】从零开始深入理解KCP原理(含TCP可靠机制原理), 及源码解析。

    目录 KCP是什么 KCP商业案例 KCP的实现原理 停等式ARQ协议 确认机制 超时重传 连续ARQ 1 回退n帧 go back n ARQ 2 选择重传协议 selective repeat 待补充 滑动窗口协议 TCP应用的ARQ机
  • mysql中 if 函数的使用

    在MySQL中 if 为流程控制函数 效果相当与java语句中的 if else 语法 IF 判断语句 结果一 结果二 注意 当判断语句为true时 为结果一 为false时 为结果二 例子 select if 5 gt 3 大于 小于
  • 回归商业初心,宝尊电商“深耕广拓”缔造品牌电商有质增长

    今年来 受疫情 通胀 能源等因素影响 全球市场都经历了不同程度的 震荡 寒气传递之间 电商行业开始摸索后疫情时代的前进之路 随着财报季来临 市场开始期待从各赛道标杆企业财报中看出行业走势 11月29日 品牌电商第一股 宝尊电商公布了2022
  • Cesium 同时拾取多个对象与 1024*1024 个坐标

    Cesium 拾取案例 在上一文 Cesium 中的离屏渲染 已经了解到 拾取可以通过离屏渲染实现 其中涉及到了颜色缓存和深度缓存的概念 拾取对象 颜色缓存 Cesium 的 Scene pick 只返回选中的第一个物体 根据上文已知原理是
  • SpringBoot不同环境动态加载不同配置文件

    在平常开发完成后 需要针对不同的环境进行不同的配置文件的选择 之前是建立多个配置文件 然后指定某一个配置文件使用 在进行部署的时候可以使用jar启动命令传参数的办法指定环境 但这样还不够通用 这里讲述一个根据环境变量自动加载不同配置文件的办