通常在项目开发中会有:本地开发环境,测试环境,生产环境等多套不同的环境,而这些环境所部署的服务器、用到的redis缓存服务以及数据库也不经相同。如果每次部署不同的环境都去修改配置文件中的配置信息,想想就非常繁琐,今天就讲讲如何通过多环境变量的配置实现项目在启动时,通过idea工具的勾选,读取不同的配置文件。
通常想要在项目启动时读取不同的配置信息有两种方式:一种是用带命令的命令行启动项目jara包;第二种是在idea工具中通过项目工程右上角的profiles勾选不同的环境配置,启动项目。
1.首先我们在项目的resources目录下创建适配各个环境的配置文件:
application.yml 总配置文件
application-dev.yml 开发环境配置
application-test.yml 测试环境配置
application-prod.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 #日志级别
#服务器端口和上下文
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
#服务器端口和上下文
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
#服务器端口和上下文
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文件夹下已经有了不同的环境
一.idea工具启动项目
选择开发环境启动,看看是否可以正常启动;
若出现如下报错提示,可能是pom.xml文件缺少dynamic的依赖,添加依赖,重新编译再次启动应该就可以了。
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包;
第二步,进入targer目录,执行命令:
java -jar sasac-databoard-0.0.1-SNAPSHOT.jar –spring.profiles.active=prod
项目会调用prod配置文件,以生产的配置启动项目。