SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)

通常在项目开发中会有:本地开发环境,测试环境,生产环境等多套不同的环境,而这些环境所部署的服务器、用到的redis缓存服务以及数据库也不经相同。如果每次部署不同的环境都去修改配置文件中的配置信息,想想就非常繁琐,今天就讲讲如何通过多环境变量的配置实现项目在启动时,通过idea工具的勾选,读取不同的配置文件。

通常想要在项目启动时读取不同的配置信息有两种方式:一种是用带命令的命令行启动项目jara包;第二种是在idea工具中通过项目工程右上角的profiles勾选不同的环境配置,启动项目。

1.首先我们在项目的resources目录下创建适配各个环境的配置文件:
application.yml 总配置文件
application-dev.yml 开发环境配置
application-test.yml 测试环境配置
application-prod.yml 生产环境配置

  1. application.yml 总配置文件配置
#配置端口号和上下文
server:
  port: ${serverPort}
  servlet:
    context-path: ${contextPath}
#配置启用哪个环境配置,activatedProperties为pom文件中的标签
spring:
  profiles:
    active: @activatedProperties@
  application:
    name: sasac-databoard
  aop:
    auto: true
    proxy-target-class: true
  #数据库配置多数源
  datasource:
    dynamic:
      primary: master #设置默认的数据源或者数据源组,默认值即为master
      datasource:
        master:
          url: ${datasource.master.url}
          username: ${datasource.master.username}
          password: ${datasource.master.password}
          driver-class-name: com.mysql.cj.jdbc.Driver
        bus:
          url: ${datasource.bus.url}
          username: ${datasource.bus.username}
          password: ${datasource.bus.password}
          driver-class-name: com.mysql.cj.jdbc.Driver
      hikari:
        maximum-pool-size: 40
        minimum-idle: 2
        idle-timeout: 30000
        pool-name: MySQLConnnetPool
        max-lifetime: 1800000
        connection-timeout: 30000
        connection-test-query: SELECT 1

mybatis-plus:
  config-location: classpath:mybatis/mybatis-config.xml #指定全局配置文件
  mapper-locations: classpath:*/mapper/*.xml  #指定sql映射文件

logging:
  level:
    root: info #日志级别
  1. application-dev.yml 开发环境配置
#服务器端口和上下文
serverPort: 8087
contextPath: /sasac-dev

datasource:
  master:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/my_test_data?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull
  bus:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/sasac_data_screen?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull
  1. application-test.yml 测试环境配置
#服务器端口和上下文
serverPort: 8088
contextPath: /sasac-test

datasource:
  master:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/my_test_data?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull
  bus:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/sasac_data_screen?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull
  1. application-prod.yml 生产环境配置
#服务器端口和上下文
serverPort: 8089
contextPath: /sasac-prod

datasource:
  master:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/my_test_data?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull
  bus:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/sasac_data_screen?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&zeroDateTimeBehavior=convertToNull

6.pom.xml文件添加配置环境
如果要实现打包时能动态指定配置文件,就需要在pom.xml文件中做如下配置:

<profiles>
    <!--开发环境-->
    <profile>
        <id>dev</id>
        <properties>
            <activatedProperties>dev</activatedProperties>
        </properties>
        <activation>
            <!-- 默认环境 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--测试环境-->
    <profile>
        <id>test</id>
        <properties>
            <activatedProperties>test</activatedProperties>
        </properties>
    </profile>
    <!--生产环境-->
    <profile>
        <id>prod</id>
        <properties>
            <activatedProperties>prod</activatedProperties>
        </properties>
    </profile>
</profiles>

配置完成,我们会发现idea工具右上角的maven菜单下profiles文件夹下已经有了不同的环境SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)_第1张图片

一.idea工具启动项目
选择开发环境启动,看看是否可以正常启动;
SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)_第2张图片
若出现如下报错提示,可能是pom.xml文件缺少dynamic的依赖,添加依赖,重新编译再次启动应该就可以了。
SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)_第3张图片
pom.xml文件中添加依赖包:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

二.命令行启动项目
第一步,Cmd命令行窗口进入项目下:
mvn install 命令进行打包,targer目录下会生成项目的jar包;
SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)_第4张图片
第二步,进入targer目录,执行命令:
java -jar sasac-databoard-0.0.1-SNAPSHOT.jar –spring.profiles.active=prod
SpringBoot项目多环境配置(基于Intellij-IDEA开发工具)_第5张图片
项目会调用prod配置文件,以生产的配置启动项目。

你可能感兴趣的:(SpringBoot,IDEA工具,spring,boot,intellij-idea,web,application)