SpringBoot项目配置文件编写方式参考

2023-05-16

背景

​    为防止出现各环境配置文件不同步的情况,现根据实际开发情况,制定该配置文件编写参考。

介绍

​    SpringBoot使用一个全局的配置文件,配置文件名是固定的;

​    •application.properties

​    根据实际应用场景,存在多环境配置需求(开发dev、测试test、生产prod……),因此多数情况采用多环境配置文件的办法。

​    springboot当中,application是我们的主配置文件,至于是yml结尾的文件还是properties结尾的文件,这两种都可以的,没有实质区别,都是更改springboot全局默认值。唯一的区别就是语法区别。

环境区分:

- dev: 开发环境

- test: 测试环境
- prod: 生产环境(线上)

  用法详解:

        这里以properties文件为例:创建三个配置文件,其中application.properties用来指定环境。application-环境名称 这个是多配置文件的命名规则。这个后缀环境名称,在指定的时候会用到的。

> application.properties
        这里我们指定开发环境,在实际开发当中,一般开发环境和生产环境相同的配置会存放到该配置文件当中,这样可以合理的管理配置文件,看着不会那么杂乱。

spring.profiles.active=dev

> application-dev.properties

server.port=8081

> **application-test.properties**

 server.port=8082

> **application-prod.properties**

server.port=8083

------

目的

​    根据实际情况存在以下情况:

 ​    开发阶段根据需求变更了配置,例如接口地址,此时生产环境的接口地址未定,暂未更新;此时只更新了开发环境和生产环境的配置。开发测试完毕后,生产环境的配置忘记同步变更成最新的接口地址,因此导致生产环境的配置错误。

​    针对此类问题,提出两种方案:

方案一

​    根据springboot全局配置文件的特性,可以采用分割与统一的方式:

​    以接口地址为例,通常情况接口地址组成结构为 `【域名/ip】 + 【路径】` 组成,不同环境下`【域名/ip】`这部分内容是不同的,但是`【路径】`这部分应是相同的。因此得出方案为:

> 将接口地址分割,`【域名/ip】`部分放入环境配置文件(application-环境名称)中,`【路径】`部分放入全局配置文件(application.properties)中。

​    该方案的优点在于,各环境下`【域名/ip】`并不会经常变动,`【域名/ip】`放在环境配置文件中可以根据不同环境请求不同域名/ip;而放在全局配置文件中的`【路径】`可以保证不同环境请求的路径是相同的。

​    代码示例:

> **application.properties**

spring.profiles.active=dev
third.api.no1=/api/no1
third.api.no2=/api/no2

> **application-dev.properties**

server.port=8081
third.api.host=http://dev.third.com

> **application-test.properties**

server.port=8082
third.api.host=http://test.third.com

> **application-prod.properties**

server.port=8083
third.api.host=http://prod.third.com

> **ThirdConfig.java**

@Value("${third.api.host}+${third.api.no1}")
private String apiNo1;
@Value("${third.api.host}+${third.api.no2}")
private String apiNo2;

方案二

​    原理与方案一相同,采用分割与统一的方式:

> 将接口地址分割,`【域名/ip】`部分放入环境配置文件(application-环境名称)中,`【路径】`部分放入**常量类**中。

​    优点在于放入常量类中便于在开发时快速跟踪到位,并且配置为空时编译器会自动提醒。

​    代码示例:

> **application-dev.properties**

server.port=8081
third.api.host=http://dev.third.com

> **application-test.properties**

server.port=8082
third.api.host=http://test.third.com

> **application-prod.properties**

server.port=8083
third.api.host=http://prod.third.com

> **MiddleConstants.java**

private String API_NO1 = "/api/no1";
private String API_NO2 = "/api/no2";

> **MiddleConfig.java**

@Value("{third.api.host}")
private String apiHost;

> **Demo.java**

@Autowired
private ThirdConfig thirdConfig;

String url1 = thirdConfig.getapiHost + ThirdConstants.API_NO1;
String url2 = thirdConfig.getapiHost + ThirdConstants.API_NO2;


 

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

SpringBoot项目配置文件编写方式参考 的相关文章

随机推荐

  • 多生产者多消费者问题的无锁队列实现

    背景 代码根据论文 Implementing Lock Free Queues 复现 背景知识博客 xff1a 左耳朵耗子博客 https coolshell cn articles 8239 html 代码地址 xff1a https g
  • Ubuntu18下Github+Hexo搭建博客教程

    我的博客 xff0c 欢迎来访 xff1a www zxwsbg cn 搭建 安装git nodejs sudo apt get install git sudo apt get install nodejs sudo apt get in
  • linux中提供了PF_PACKET接口可以操作链路层的数据

    http blog sina com cn s blog 82f2fc28010132og html sock raw xff08 注意一定要在root下使用 xff09 原始套接字编程可以接收到本机网卡上的数据帧或者数据包 对于监听网络的
  • 分享52个Java源码,总有一款适合您

    Java源码 分享52个Java源码 xff0c 总有一款适合您 下面是文件的名字 xff0c 我放了一些图片 xff0c 文章里不是所有的图主要是放不下 xff0c 大家下载后可以看到 源码下载链接 xff1a https pan bai
  • 抽象类中的方法该如何实现呢?

    本节通过一个案例来学习如何实现抽象类中的方法 xff0c 具体步骤如下 xff1a 1 创建Animal类 创建一个Animal抽象类 xff0c 并在类中定义一个抽象call 方法 xff0c 如文件3 25所示 文件3 25Animal
  • zset类型的底层数据结构的实现

    参考资料 xff1a redis中zset底层实现原理 渣渣 CSDN博客 zset底层数据结构 redis的zset数据结构 xff1a 跳表 知乎 zset类型的底层数据结构的实现 xff1f zset是Redis提供的一个非常特别的数
  • XD软件都有哪些基础操作?

    下面我们来学习一下XD软件的基础操作 xff0c 包括资产面板的功能 交互动作 一键切图等等 1 重复网格 xff08 1 xff09 重复网格可智能复制其选择对象 xff0c 并批量更换图片 修改文字 之间距离等 xff08 2 xff0
  • 3分钟掌握7个XD基础操作

    下面我们来学习一下XD软件的基础操作 xff0c 包括资产面板的功能 交互动作 一键切图等等 1 重复网格 xff08 1 xff09 重复网格可智能复制其选择对象 xff0c 并批量更换图片 修改文字 之间距离等 xff08 2 xff0
  • 目标跟踪常用算法——EKF篇

    目录 1 扩展卡尔曼滤波算法 1 1 扩展卡尔曼滤波算法简单介绍 1 2 扩展卡尔曼滤波算法流程 1 3 扩展卡尔曼滤波算法仿真分析 2 参考文献 1 扩展卡尔曼滤波算法 1 1 扩展卡尔曼滤波算法简单介绍 对于非线性滤波问题 xff0c
  • 人工智能概述

    目录 什么是人工智能实现人工智能的方法逻辑编程机器学习深度学习机器学习和深度学习的区别 人工智能的分类如何实现人工智能 什么是人工智能 人工智能 又被称为机器智能 xff0c 是一种综合计算机科学 统计学 语言学等多种学科 xff0c 使机
  • java注解(annotation)的执行顺序

    可以在切面上使用 64 Order注解 如 64 Component 64 Aspect 64 Order 1 public class Aspect1 64 Component 64 Aspect 64 Order 2 public cl
  • Eclipse 常用快捷键 (动画讲解)

    Eclipse 常用快捷键 动画讲解 Eclipse有强大的编辑功能 xff0c 工欲善其事 xff0c 必先利其器 xff0c 掌握Eclipse快捷键 xff0c 可以大大提高工作效率 小坦克我花了一整天时间 xff0c 精选了一些常用
  • javaweb三大框架SSH

    1 MVC三层架构 xff1a 模型层 xff0c 控制层和视图层 模型层 xff0c 用Hibernate框架让来JavaBean在数据库生成表及关联 xff0c 通过对JavaBean的操作来 对数据库进行操作 xff1b 控制层 xf
  • HTTP请求方式及区别

    GET 向特定的路径资源发出请求 xff0c 数据暴露在url中 POST 向指定路径资源提交数据进行处理请求 xff08 一般用于上传表单或者文件 xff09 xff0c 数据包含在请求体中 OPTIONS 返回服务器针对特定资源所支持的
  • C++实现邮件群发的方法

    这篇文章主要介绍了C 43 43 实现邮件群发的方法 较为详细的分析了邮件发送的原理与C 43 43 相关实现技巧 非常具有实用价值 需要的朋友可以参考下 本文实例讲述了C 43 43 实现邮件群发的方法 分享给大家供大家参考 具体如下 x
  • Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

    Asp Net Core IIS发布后PUT DELETE请求错误405 0 Method Not Allowed 因为使用了无效方法 HTTP 谓词 一 在使用Asp net WebAPI 或Asp Net Core WebAPI 时 x
  • Java lambda表达式使用笔记

    package com allsaints music admin import com allsaints music admin service entrymgr bak Student import lombok Data impor
  • .NET Framework 与 .NET Core 的区别与联系

    当今 net 生态系统如下 xff1a 从上面图中我们可以看到 net 主要分为三个部分 net FrameWork net Core Xamarin XAMARIN 主要用来构建APP的 xff08 包括IOS xff0c Android
  • .net 代码命名规范

    CAST 源代码命名规范手册 v1 1 Pascal 命名 xff1a 每一个单词首字母必须大写 Camel 命名 xff1a 第一个单词首字母小写 xff0c 其余单词首字母必须大写 任何命名必须优先使用英文单词表达意思 xff0c 若不
  • SpringBoot项目配置文件编写方式参考

    背景 为防止出现各环境配置文件不同步的情况 xff0c 现根据实际开发情况 xff0c 制定该配置文件编写参考 介绍 SpringBoot使用一个全局的配置文件 xff0c 配置文件名是固定的 xff1b application prope