springboot设置多环境配置文件

实际开发过程中会涉及多个环境,比如dev(开发环境),test(测试环境),prod(线上环境),不同环境下,端口号、数据库地址、redis地址等等会不尽相同,为了避免每次上线到不同环境都要修改配置文件可以在项目中配置多个配置文件,需要哪个激活哪个。

简单使用,不涉及过多讲解

实现方法(以.yml为例):

方法一:创建多个.yml文件

在项目中创建三个.yml文件,分别是

application-dev.yml、application-test.yml、application-prod.yml

application-dev.yml (包含稍微多一些的配置,以防后面忘了咋配可以看一下)

复制代码
server:
  port: 8081
  servlet:
    context-path: "/admin" #修改项目访问路径 ,默认是 /

spring:
  application:
    name: volcano-admin
  #mysql
  datasource:
    url: jdbc:mysql://localhost:3306/volcano?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  #redis
  redis:
    host: 127.0.0.1
    port: 6379

# mybatis
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.passion.volcanoadmin.entity

application-prod.yml(简单配置,区分dev和pro环境,就用端口号prot不同体现了)

复制代码
server:
  context-path: /admin
  port: 8082

lapplication-test.yml(简单配置,区分dev和test环境,就用端口号prot不同体现了)

复制代码
server:
  context-path: /admin
  port: 8083

在application.yml中激活要使用的配置文件

application.yml

复制代码
#激活不同环境的配置文件
spring:
  profiles:
    active: dev

激活的是dev环境,所以项目启动时会读取application-dev.yml,使用的是8081的端口号

方法二:一个文件中使用"---"分隔符分割不同环境的配置,每个块中指定 使用profile: dev指定环境

application.yml

复制代码
server:
  port: 8089
  servlet:
    context-path: "/admin" #修改项目访问路径 ,默认是 /
  profile: dev
---
server:
  port: 8088
  profile: test

---
server:
  port: 8087
  profile: prod

spring:
  application:
    name: volcano-admin
  #mysql
  datasource:
    url: jdbc:mysql://localhost:3306/volcano?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

---
#激活不同环境的配置文件
spring:
  profiles:
    active: prod

激活的是prod,此时读的是profile: profile的块,所以端口号是8087

配置文件的激活方式

配置文件的激活方式有四种

  1. 在配置文件中激活(上面的例子就是)
  2. 在虚拟机参数中指定激活 (VM options 和 program arguments两种方式)
  3. 使用命令行运行是指定

具体如何操作:

1、在配置文件中激活,上面的实例就是使用的这种方式

在application.yml中指定

复制代码
#激活不同环境的配置文件
spring:
  profiles:
    active: prod

2、虚拟机的参数中指定

2.1 VM options

点开之后会有一个 "VM options"的框,根据idea版本不同可能会有所不同。如果没有可以点击"Modify options" 下拉框中会有"VM options",选择后"VM options"框就会出来,配置上

"-Dspring.profiles.active=test" 即可,此时激活的是test环境

(说明:我本机使用的时三个配置文件的方式,所以dev的port是8081,prod的port是8082,test的port是8083)启动项目:

2.2program arguments

同2上的位置,可以找到"program arguments"的框,如果没有就是"Modify options"下拉框中找。配置上"--spring.profiles.active=prod",此时激活的是prod环境(我本机设置的pror是8082),启动项目:

3、运行是指定运行环境

运行jar包的命令是 jave -jar xxx.jar,如果要指定运行环境在后面加上--spring.profiles.active=dev

即:java -jar xxx.jar--spring.profiles.active=dev

顺便说一下jave打包,

可以使用idea 右侧MAVEN ------ package进行打包,这种方式打包到当前项目的target文件夹下。也可以使用mvn install进行打包,这种方式会打包到maven setting.xml配置的仓库中

相关推荐
小突突突1 天前
Spring框架中的单例bean是线程安全的吗?
java·后端·spring
iso少年1 天前
Go 语言并发编程核心与用法
开发语言·后端·golang
掘金码甲哥1 天前
云原生算力平台的架构解读
后端
码事漫谈1 天前
智谱AI从清华实验室到“全球大模型第一股”的六年征程
后端
码事漫谈1 天前
现代软件开发中常用架构的系统梳理与实践指南
后端
Mr.Entropy1 天前
JdbcTemplate 性能好,但 Hibernate 生产力高。 如何选择?
java·后端·hibernate
菜鸟233号1 天前
力扣96 不同的二叉搜索树 java实现
java·数据结构·算法·leetcode
sww_10261 天前
Spring-AI和LangChain4j区别
java·人工智能·spring
泡泡以安1 天前
【爬虫教程】第7章:现代浏览器渲染引擎原理(Chromium/V8)
java·开发语言·爬虫
月明长歌1 天前
Java进程与线程的区别以及线程状态总结
java·开发语言