zoukankan      html  css  js  c++  java
  • 多环境配置

    原文:http://www.importnew.com/29368.html

    多环境配置

    在开发应用时,常用部署的应用是多个的,比如:开发、测试、联调、生产等不同的应用环境,这些应用环境都对应不同的配置项,比如swagger一般上在生产时是关闭的;不同环境数据库地址、端口号等都是不尽相同的,要是没有多环境的自由切换,部署起来是很繁琐也容易出错的。

    maven的多环境配置

    在没有使用过springboot的多环境配置时,原先是利用mavenprofile功能进行多环境配置,这里我简单回顾下。

    maven配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <profiles>
        <profile>
           <id>dev</id>
           <activation>
                 <activeByDefault>true</activeByDefault>
             </activation>
             <properties>
                <pom.port>8080</pom.port>
             </properties>
        </profile>
        <profile>
           <id>test</id>
             <properties>
                <pom.port>8888</pom.port>
             </properties>
        </profile>      
     </profiles>
     <build>
     <resources>
         <resource>
             <directory>src/main/resources</directory>
             <includes>
                 <include>**/*</include>
             </includes>
         </resource>
         <resource>
             <directory>${project.basedir}/src/main/resources</directory>
             <includes>
                 <include>**/*.properties</include>
             </includes>
             <!-- 加入此属性,才会进行过滤 -->
             <filtering>true</filtering>
         </resource>
     </resources>
     <plugins>
         <plugin>
             <artifactId>maven-resources-plugin</artifactId>
             <configuration>
                 <encoding>utf-8</encoding>
                 <!-- 需要加入,因为maven默认的是${},而springbooot 默认会把此替换成@{} -->
                 <useDefaultDelimiters>true</useDefaultDelimiters>
             </configuration>
         </plugin>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
     </build>

    然后编译时,加入-Ptest,则会替换test环境下的参数值。 完整参数:

    1
    mvn clean install -DskipTests -Ptest

    application.properties

    1
    server.port=${pom.port}

    利用maven实现多环境配置,比较麻烦的就是每次部署新环境时,都需要再次指定环境编译打包一次。一下进入主题,springboot的多环境,比较优雅了许多。

    springboot多环境配置

    Profile是Spring针对不同环境不同配置的支持。需要满足application-{profile}.properties{profile}对应你的环境标识。如:

    • application-dev.properties:开发环境
    • application-test.properties:测试环境

    而指定执行哪份配置文件,只需要在application.properties配置spring.profiles.active为对应${profile}的值。

    1
    2
    # 指定环境为dev
    spring.profiles.active=dev

    则会加载:application-dev.properties的配置内容。

    1
    2
    3
    2018-07-15 14:52:41.304  INFO 15496 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
    2018-07-15 14:52:41.310  INFO 15496 --- [           main] c.l.l.s.chapter5.Chapter5Application     : Started Chapter5Application in 8.506 seconds (JVM running for 10.81)
    2018-07-15 14:52:41.316  INFO 15496 --- [           main] c.l.l.s.chapter5.Chapter5Application     : 多环境应用启动.

    还可以在**命令行方式**激活不同环境配置,如

    1
    java -jar xxx.jar --spring.profiles.active=test

    此时就会加载application-test.properties的配置内容。 test:

    这里顺便提一句,可能在不同环境下,可能加载不同的bean时,可利用@Profile注解来动态激活

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Profile("dev")//支持数组:@Profile({"dev","test"})
    @Configuration
    @Slf4j
    public class ProfileBean {
     
        @PostConstruct
        public void init() {
            log.info("dev环境下激活");
        }   
    }

    启动时。控制台输出:

    1
    2018-07-15 15:04:44.540  INFO 11876 --- [           main] c.l.l.springboot.chapter5.ProfileBean    : dev环境下激活

    总结

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/shihaiming/p/9546161.html
Copyright © 2011-2022 走看看