zoukankan      html  css  js  c++  java
  • SpringBoot | 第五章:多环境配置

    前言

    写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点。也比较熟悉,但是这很实用。不扯了,开始~

    多环境配置

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

    maven的多环境配置

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

    maven配置

       <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环境下的参数值。
    完整参数:

     mvn clean install -DskipTests -Ptest
    

    application.properties

    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}的值。

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

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

    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     : 多环境应用启动.
    

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

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

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

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

    @Profile("dev")//支持数组:@Profile({"dev","test"})
    @Configuration
    @Slf4j
    public class ProfileBean {
    
        @PostConstruct
        public void init() {
            log.info("dev环境下激活");
        }    
    }
    

    启动时。控制台输出:

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

    总结

    目前互联网上很多大佬都有springboot系列教程,如有雷同,请多多包涵了。本文是作者在电脑前一字一句敲的,每一步都是亲身实际过的。若文中有所错误之处,还望提出,谢谢。

    老生常谈

    • 个人QQ:499452441
    • 微信公众号:lqdevOps

    个人博客:https://blog.lqdev.cn

    完整实例地址:chapter-5

    原文地址:http://blog.lqdev.cn/2018/07/15/springboot/chapter-five/


    作者:oKong | 趔趄的猿
    出处:blog.lqdev.cn
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    本文如对您有帮助,还请多帮 【推荐】 下此文。
    如果喜欢我的文章,请关注我的公众号

  • 相关阅读:
    兼容所有浏览器的CSS3圆角效果
    浏览器兼容 IE6、IE7、IE8、Firefox、Opera CSS hack区分
    分享30个优秀的网站导航设计案例
    解析如何改善和优化 Web 服务器性能
    分享40款效果非常漂亮的 HTML5 & CSS3 网站模板,模板免费下载
    分享20个非常有创意的蓝色风格网页作品触发你的设计灵感
    分享20个效果非常绚丽的 CSS3 特性应用演示
    推荐12个优秀的 HTML5 网站设计案例欣赏
    网站设计风格及色彩搭配技巧
    舞动你的文字,巧用CSS中marquee属性
  • 原文地址:https://www.cnblogs.com/okong/p/springboot-five.html
Copyright © 2011-2022 走看看