springboot yml中profiles的巧妙用法(小白必看多环境配置)

 更新时间:2021年04月28日 14:37:00   作者:Java充电桩  
这篇文章主要介绍了springboot yml中profiles的巧妙用法,非常适合多环境配置场景,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

遥想当年我还是个小白的时候,就只是写写demo,也就在一套环境上跑跑,真正当实战的时候,除了你本地环境,还有开发环境,测试环境,生产环境(上线)等等。

如果你不知道用这个profiles,那么这么多套环境,用一种老古董的写法就是这样,用哪个环境就把其他环境注释掉!

spring:
  datasource:
    username: root          							#dev
    password: 123456									#dev
    #username: root2									#test
    #password: 456789									#test
    ...

这还只2个环境的数据库账号密码而已,真正的配置比这要多了去了!

这个时候profiles的妙用就体现出来了!用active指定当前使用的环境

spring:
  profiles:
    active: local

在下面用 — 来隔开环境,用profiles来指定这个配置环境名称。

spring:
  profiles: local
  datasource:
    username: root          						
    password: 123456
---
spring:
  profiles: dev						
    username: root2									
    password: 456789
---  								
    ...

当然这样环境多了,整个yml也是很乱,所以这个时候我们是可以把这些环境捞出来,放在一个单独的yml中,以 application-{profile}.yml 的格式。

这个{profile}就是你的环境名!如下

在这里插入图片描述

一个application.yml 放基本的配置,和使用哪个环境。

然后下面这些各式各样的yml就可以用来存各个环境的数据库配置,服务注册等。

在这里插入图片描述

而且会优先使用配置的环境中的,比如我在local环境中配置了一个端口号,输出的就是local环境中的端口号。

在这里插入图片描述

当我去掉local中配置的端口号,就会用默认配置的端口号

在这里插入图片描述

springboot Failed to load ApplicationContext

如果遇到这个错,可能是配置不对,例如我是把数据库配置单独丢进去local了,当我使用dev环境时,里面没有数据库配置,最后的application.yml中也报错了,程序中有数据库交互的接口,所有就报异常了!

要么在dev中补充,要么在application.yml中补充,我个人建议在dev补充。

因为这样才能保证各个环境不会有出现问题,application.yml只配通用的东西!

其他妙用(用时补充) 配置logback中也可以用到 配置swagger也可以用到

到此这篇关于springboot yml中profiles的妙用小白必看多环境配置的文章就介绍到这了,更多相关springboot yml使用profiles内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot中@Autowired生效方式详解

    SpringBoot中@Autowired生效方式详解

    @Autowired注解可以用在类属性,构造函数,setter方法和函数参数上,该注解可以准确地控制bean在何处如何自动装配的过程。在默认情况下,该注解是类型驱动的注入
    2022-06-06
  • 深入理解Spring事务及传播机制之原理解析与实际应用

    深入理解Spring事务及传播机制之原理解析与实际应用

    Spring事务管理机制提供了多种传播行为,可以控制事务的范围和隔离级别,保证数据一致性和完整性。在实际应用中,需要根据具体业务场景选择合适的传播行为实现事务控制
    2023-04-04
  • 浅析如何使用Swagger生成带权限控制的API文档

    浅析如何使用Swagger生成带权限控制的API文档

    当涉及到权限控制时,如何生成既安全又详细的 API 文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用 Swagger 来生成带有权限控制的 API 文档吧
    2025-02-02
  • 举例讲解Java中Piped管道输入输出流的线程通信控制

    举例讲解Java中Piped管道输入输出流的线程通信控制

    Java中的PipedWriter、PipedReader类管道的读写依赖于PipedOutputStream、PipedInputStream两个管道输入输出类,这里我们将来举例讲解Java中Piped管道输入输出流的线程通信控制:
    2016-06-06
  • JavaWeb Servlet生命周期细枝末节处深究

    JavaWeb Servlet生命周期细枝末节处深究

    Servlet指在服务器端执行的一段Java代码,可以接收用户的请求和返回给用户响应结果,下面这篇文章主要给大家介绍了关于JavaWeb.servlet生命周期的相关资料,需要的朋友可以参考下
    2022-10-10
  • Java反射及性能详细

    Java反射及性能详细

    这篇文章主要介绍了Java反射及性能,现如今的java工程中,反射的使用无处无在。无论是设计模式中的代理模式,还是红透半边天的Spring框架中的IOC,AOP等等,都存在大量反射的影子。下面我们就对该话题进行详细介绍,感兴趣的小伙伴可以参考一下
    2021-10-10
  • java实现任意矩阵Strassen算法

    java实现任意矩阵Strassen算法

    这篇文章主要介绍了java实现任意矩阵Strassen算法的相关资料,需要的朋友可以参考下
    2016-02-02
  • 如何用JAVA判断当前时间是否为节假日、周末、工作日及调休日(不报错:IOException!)

    如何用JAVA判断当前时间是否为节假日、周末、工作日及调休日(不报错:IOException!)

    最近公司有个业务需要判断工作日,但是每年的节假日不一样,下面这篇文章主要给大家介绍了关于如何用JAVA判断当前时间是否为节假日、周末、工作日及调休日的相关资料,且不报错:IOException!,需要的朋友可以参考下
    2023-12-12
  • SpringBoot中使用Quartz设置定时任务的实例详解

    SpringBoot中使用Quartz设置定时任务的实例详解

    Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于 Java 实现,本文小编给大家介绍了SpringBoot中如何使用Quartz设置定时任务,文中通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2023-12-12
  • IDEA如何切换数据库版本mysql5或mysql8

    IDEA如何切换数据库版本mysql5或mysql8

    本文介绍了如何将IntelliJ IDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及更改密码等
    2025-01-01

最新评论