SpringBoot多环境配置---带图带文,一看就知道

很多的时候我们的项目再不同环境是需要不同的配置的,那么我们怎么分环境部署或者打包呢,请往下面看

首先要在pom.xml加入如下的配置:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <spring.active>dev</spring.active>
        </properties>
        <activation>
            <!-- 打包和运行没有指定环境,就是打dev包 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <spring.active>test</spring.active>
        </properties>
    </profile>
    <profile>
        <id>stg</id>
        <properties>
            <spring.active>stg</spring.active>
        </properties>
    </profile>
    <profile>
        <id>prd</id>
        <properties>
            <spring.active>prd</spring.active>
        </properties>
    </profile>
</profiles>

 

为了让大家看出pom.xml结构,完整的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.wangye</groupId>
    <artifactId>spboot-logback</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spboot-logback</name>
    <description>Spring Boot with logback</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <spring.active>dev</spring.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <spring.active>test</spring.active>
            </properties>
        </profile>
        <profile>
            <id>stg</id>
            <properties>
                <spring.active>stg</spring.active>
            </properties>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <spring.active>prd</spring.active>
            </properties>
        </profile>
    </profiles>

</project>

配置了Profiles配置之后,就要创建相应的application.properties文件。

 

然后在application.properties中加入如下的配置:

spring.profiles.active=@spring.active@

完整配置就是上面的那样

因为分了环境:

所以再看看application-dev.propertiesapplication-test.properties

application-dev.properties:

# 数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 用户名
spring.datasource.username=root
# 密码
spring.datasource.password=root
#自动提交 默认值true
spring.datasource.hikari.auto-commit=true
#此属性控制客户端(即您)将等待来自池的连接的最大毫秒数。 默认值30000(30秒)
spring.datasource.hikari.connection-timeout=30000
#此属性控制允许连接在池中闲置的最长时间。 默认值600000(10分钟),此设置仅适用于minimumIdle定义为小于maximumPoolSize。
spring.datasource.hikari.idle-timeout=600000
#此属性控制池中连接的最大生存期。 1800000(30分钟)
spring.datasource.hikari.max-lifetime=1800000
#该属性控制HikariCP尝试在池中维护的最小空闲连接数。不推荐使用这个,默认是和maximum-pool-size相等
spring.datasource.hikari.minimum-idle=5
#此属性控制池允许达到的最大大小,包括空闲和正在使用的连接。默认值10
spring.datasource.hikari.maximum-pool-size=5
#mybatis对应的映射文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
#mybatis对应的实体类
mybatis.type-aliases-package=com.wangye.spbootmybatis1.model

application-test.properties:

# 数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/test1?serverTimezone=GMT%2B8&useSSL=false
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 用户名
spring.datasource.username=root
# 密码
spring.datasource.password=root
#自动提交 默认值true
spring.datasource.hikari.auto-commit=true
#此属性控制客户端(即您)将等待来自池的连接的最大毫秒数。 默认值30000(30秒)
spring.datasource.hikari.connection-timeout=30000
#此属性控制允许连接在池中闲置的最长时间。 默认值600000(10分钟),此设置仅适用于minimumIdle定义为小于maximumPoolSize。
spring.datasource.hikari.idle-timeout=600000
#此属性控制池中连接的最大生存期。 1800000(30分钟)
spring.datasource.hikari.max-lifetime=1800000
#该属性控制HikariCP尝试在池中维护的最小空闲连接数。不推荐使用这个,默认是和maximum-pool-size相等
spring.datasource.hikari.minimum-idle=10
#此属性控制池允许达到的最大大小,包括空闲和正在使用的连接。默认值10
spring.datasource.hikari.maximum-pool-size=10
#mybatis对应的映射文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
#mybatis对应的实体类
mybatis.type-aliases-package=com.wangye.spbootmybatis1.model

这两个文件的区别就是数据库url和minimumIdle以及maximumPoolSize不同。那么来启动一下项目

注意:因为我简单的配置了一下日志所以日志会输出当前的环境。IDEA要指定启动环境就要像下面的图片配置:

 

我指定了test环境,也配置了简单的日志。

那么看看日志给我们输出了什么:

 

加下来我们改为dev:

 

看看输出日志:

 

由此看出spring正确的加载了改加载的文件,application.properties是默认加载的,然后根据active profiles的设置,会加载相应环境的application-XXX.properties文件。

 

那么Maven打包怎么办呢:

很简单像下面那样就好:

 

图中就指定了环境是test

那么,我们解压打包后的jar包看看application.properties的值

 

是不是这个文件的值就已经改了,那么这个jar包运行的时候也肯定会是以test环境配置的属性运行咯

总结:

笔者启动项目的方式设置参数只是其中的一种,但是是笔者喜欢的一种

maven打包的方式也是笔者喜欢的一种,也有很多种。如果大家想知道其他方式,找找度娘。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值