问题导入

在开发中 我们有开发环境 、测试环境、 生产环境 每次打包都要手动去改ip 端口号 密码等配置 是非常麻烦的 所以有了对环境配置 通过maven 实现

  • yaml文件多环境启动
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在实际开发中,项目的开发环境、测试环境、生产环境的配置信息是否会一致?如何快速切换?

1. 首先这pom 文件里添加配置

    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <!--  默认激活-->
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
         <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
    </build>

我这里只配置了两个 如配置其他的参考prod 默认 maven 使用dev

2. application.yml 配置文件

将公共的配置抽出来 就是不需要改IP 获取端口号 密码等到配置信息抽出来 公共的配置

# Spring配置
spring:
 messages:
   basename: i18n/messages
 profiles:
   active: @profiles.active@
 servlet:
   multipart:
     enabled: true
     max-file-size: 20MB
     max-request-size: 1000MB

重点是 @profiles.active@

3. application-dev.yml 配置文件

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://192.168.xx.xx:xxxx/xxxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: xxxx
                password: xxxxx
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url:
                username:
                password:
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter:
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username:
                login-password:
            filter:
                config:
                    # 是否配置加密
                    enabled: false
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true
    data:
        mongodb:
            uri: mongodb://192.168.xx.xx:xx/xxxxxx
        multipart:
            # 单个文件大小
            max-file-size: 100GB
            # 设置总上传的文件大小
            max-request-size: 100GB
    # redis 配置
    redis:
        # 地址
        host: 192.168.x.xx
        # 端口,默认为6379
        port: xxxx
        # 数据库索引
        database: x
        # 密码
        password:
        # 连接超时时间
        timeout: 10s
        lettuce:
            pool:
                # 连接池中的最小空闲连接
                min-idle: 0
                # 连接池中的最大空闲连接
                max-idle: 8
                # 连接池的最大数据库连接数
                max-active: 8
                # #连接池最大阻塞等待时间(使用负值表示没有限制)
                max-wait: -1ms

application-prot.yml 同理

4. Maven 使用

在这里插入图片描述

在打包或者运行项目的时候 勾选你想要的环境就行了

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐