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环境下激活

    总结

  • 相关阅读:
    JS权威指南读书笔记(二)
    JS权威指南读书笔记(一)
    NodeList和HTMLCollection区别
    2016年前端技术展望
    Label标签for属性
    JavaScript Array vs new Array区别
    禁止滚动事件方法
    shim和polyfill 区别解释
    Html5知识精粹纪录
    前端url 相关设置获取总结
  • 原文地址:https://www.cnblogs.com/shihaiming/p/9546161.html
Copyright © 2011-2022 走看看