配置不同生产环境

本文适用于开发环境下需要打包项目至生产环境,避免开发环境的配置文件泄露。

设置maven

作用:1. 手动调节运行时的不同环境 2. 打包时可以不会有其它环境的文件

注:每次换环境前(打包前)记得手动clean清楚,因为idea不会在换环境后自动清除另一个环境的文件

在pom文件中加

  • 在依赖 前加

    <!--分别设置开发,生产环境-->
    <profiles>
        <!-- 开发环境 -->
        <profile>
            <id>dev</id>
            <activation>
                <!--设置默认为dev环境-->
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <environment>dev</environment>
            </properties>
        </profile>
        <!-- 生产环境 -->
        <profile>
            <id>prod</id>
            <activation>
                <!--不设置该环境为默认环境-->
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <environment>prod</environment>
            </properties>
        </profile>
    </profiles>
    
  • 在 标签中放该代码

    <resources>
    <!--排除配置文件-->
        <resource>
            <directory>src/main/resources</directory>
            <!--先排除所有的配置文件-->
            <excludes>
                <!--使用通配符,当然可以定义多个exclude标签进行排除-->
                <exclude>application*.yaml</exclude>
            </excludes>
        </resource>
    
        <!--根据激活条件引入打包所需的配置和文件-->
        <resource>
            <directory>src/main/resources</directory>
            <!--引入所需环境的配置文件-->
            <filtering>true</filtering>
            <includes>
                <include>application.yaml</include>
                <!--根据maven选择环境导入配置文件-->
                <include>application-${environment}.yaml</include>
            </includes>
        </resource>
    </resources>
    

设置三个yaml

application.yamlapplication-dev.yaml application-prod.yaml

//application.yaml

//方法一:弊端(打包时会把dev 和 prod环境的配置文件都会打包),无法真正做到多环境开发
spring:
  profiles:
    active: dev	//这里是写配置文件命名-后的单词
    
//方法二:通过maven来告诉springboot应该打包哪个环境的文件(优点:不会包含其他环境的配置文件)
spring:
  profiles:
    active: '@environment@'  #这里的单词要手动打,等有提示才行,不然会失败。注意YAML配置文件需要加单引号,否则会报错。
//application-dev.yaml

server:
  port: 8080
//application-prod.yaml

server:
  port: 80

注意:

如果有设置日志打印,想要不同环境日志打印不同需要去日志打印的配置文件改这些:把上面上部分改成下部分

			<root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="FILE"/>
            </root>
------------------------------------------------------------------
		<!--dev环境下的日志输出方式-->
        <springProfile name="dev">
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="FILE"/>
            </root>
        </springProfile>
    
        <!--prod环境下的日志输出方式-->
        <springProfile name="prod">
            <root level="INFO">
                <appender-ref ref="FILE"/>
            </root>
        </springProfile>