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

 更新时间:2024年11月28日 10:05:57   作者:雨欲语  
通过在resource目录下创建不同环境的配置文件,并在Spring Boot启动类中使用环境变量来加载相应的配置文件,从而实现不同环境下的配置自动加载

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

在平常开发完成后,需要针对不同的环境进行不同的配置文件的选择,之前是建立多个配置文件,然后指定某一个配置文件使用,在进行部署的时候可以使用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}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于@ResponseBody 默认输出的误区的解答

    关于@ResponseBody 默认输出的误区的解答

    这篇文章主要介绍了关于@ResponseBody 默认输出的误区的解答,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 八种Java中的基本数据类型详解

    八种Java中的基本数据类型详解

    在Java编程中,基本数据类型是必不可少的一部分,对于初学者而言,理解这些基本数据类型是非常重要的,下面我们就来学习一下Java中的八种基本数据类型,以及它们的使用方法吧
    2023-08-08
  • SpringBoot的两种启动方式原理解析(配置方案)

    SpringBoot的两种启动方式原理解析(配置方案)

    本文介绍了Spring Boot中两种启动方式,使用内置Tomcat启动和使用外置Tomcat部署,在使用内置Tomcat启动时,可以通过IDEA的main函数启动,也可以使用nohup命令在后台运行,这篇文章主要介绍了SpringBoot的两种启动方式原理 ,需要的朋友可以参考下
    2025-01-01
  • 10分钟在服务器部署好Jenkins的详细过程

    10分钟在服务器部署好Jenkins的详细过程

    这篇文章主要介绍了10分钟在服务器部署好Jenkins,本文主要是 Jenkins 的安装部署,那前提我们应该装好 Git Maven JDK,准备工作本文不给大家详细介绍了,对服务器部署Jenkins相关知识感兴趣的朋友一起看看吧
    2022-08-08
  • Java中MapStruct的使用详解

    Java中MapStruct的使用详解

    这篇文章主要介绍了Java中MapStruct的使用详解,mapstruct,全称是org.mapstruct.Mapper, 是将接口或抽象类标记为映射器,并通过MapStruct为这个接口或者抽象类生成一个实现类,大大简化了Java bean类型之间转换,需要的朋友可以参考下
    2023-09-09
  • springboot整合mongodb并实现crud步骤详解

    springboot整合mongodb并实现crud步骤详解

    这篇文章主要介绍了springboot整合mongodb并实现crud,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • springbean的八种加载方式汇总

    springbean的八种加载方式汇总

    这篇文章主要介绍了springbean的八种加载方式,一种是XML方式声明bean,使用@Component及其衍生注解@Controller 、@Service、@Repository定义bean,还有其他方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Java Socket编程从零到实战详解(完整实战案例)

    Java Socket编程从零到实战详解(完整实战案例)

    这篇文章主要介绍了Java Socket编程从零到实战详解,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • Mybatis choose when用法实例代码

    Mybatis choose when用法实例代码

    本文通过实例代码给大家介绍了Mybatis choose when用法,需要的的朋友参考下吧
    2017-06-06
  • java对接微信小程序详细流程(登录&获取用户信息)

    java对接微信小程序详细流程(登录&获取用户信息)

    这篇文章主要给大家介绍了关于java对接微信小程序(登录&获取用户信息)的相关资料,我们在开发微信小程序时经常需要获取用户微信用户名以及头像信息,微信提供了专门的接口API用于返回这些信息,需要的朋友可以参考下
    2023-08-08

最新评论