zoukankan      html  css  js  c++  java
  • Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换

    前两篇不错

    Spring.profile实现开发、测试和生产环境的配置和切换 - Strugglion - 博客园
    https://www.cnblogs.com/strugglion/p/7091021.html

    详解Spring中的Profile - 简书
    https://www.jianshu.com/p/948c303b2253

    spring-mvc-hibernate.xml

        <!-- JSR303 Validator定义 -->
        <bean id="validator"
            class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
    
        <!-- 引入属性文件 -->
        <!-- 基于Spring Profile机制的database连接配置 -->
        <!-- 开发环境配置文件 -->
        <beans profile="dev">
            <context:property-placeholder location="classpath:profiles/dbconfig_dev.properties" ignore-unresolvable="true" />
        </beans>
        <!-- 测试环境配置文件 -->
        <beans profile="test">
            <context:property-placeholder location="classpath:profiles/dbconfig_test.properties" ignore-unresolvable="true" />
        </beans>
        <!-- 生产环境配置文件 -->
        <beans profile="prod">
            <context:property-placeholder location="classpath:profiles/dbconfig_prod.properties" ignore-unresolvable="true" />
        </beans>
    </beans>

    web.xml

        <!-- 设置spring.profiles.active后则spring.profiles.default失效,web启动时会加载对应的环境信息 -->
        <!-- 为了适应jenkins的持续集成发布crm.war方案,在tomcat的bin/setenv.sh中追加如下参数:-Dspring.profiles.active="xxxx"。xxx为dev/test/prod其中之一。 -->
        <context-param>
            <param-name>spring.profiles.default</param-name>
            <param-value>dev</param-value>
        </context-param>
        <!--
        <context-param>
            <param-name>spring.profiles.active</param-name>
            <param-value>prod</param-value>
        </context-param>
        -->

     setenv.sh

    [root@crm_web apache-tomcat-7.0.91]# cat bin/setenv.sh
    CATALINA_OPTS="$CATALINA_OPTS -Dspring.profiles.active=test -Djava.rmi.server.hostname=192.168.66.16 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"

     setenv.bat

    set CATALINA_OPTS=-Dspring.profiles.active=test -Djava.rmi.server.hostname=192.168.66.182 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access

    注意事项:

    1.spring.profiles.active

    2.profile 特性是在spring3.1中引入的,3.0还不支持。xml配置中的spring-beans-3.0.xsd,在3.0中解析不到3.1中的profile,所以必须替换成spring-beans-3.1.xsd

      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

    3.Nested <beans> must appear last in the file.

      https://dzone.com/articles/spring-31-environment-profiles

        Nested <beans> must appear last in the file.

        文件有正确顺序的标签示例。

      https://stackoverflow.com/questions/33869324/spring-profile-and-property-placeholder-exception

        I would try to re-order the application context file, having the two profiles before <context:property-placeholder properties-ref="deployProperties" />.

      http://www.cnblogs.com/davidwang456/p/4204569.html

       // Any nested <beans> elements will cause recursion in this method. In
         // order to propagate and preserve <beans> default-* attributes correctly,
         // keep track of the current (parent) delegate, which may be null. Create
         // the new (child) delegate with a reference to the parent for fallback purposes,
         // then ultimately reset this.delegate back to its original (parent) reference.
         // this behavior emulates a stack of delegates without actually necessitating one.
       还得多读源码,如果不把<beans>放在<bean>,会导致循环引用的问题。

    官方参考

    3. New Features and Enhancements in Spring Framework 3.1
    https://docs.spring.io/spring-framework/docs/3.2.0.RELEASE/spring-framework-reference/html/new-in-3.1.html

    Spring 3.1 M2: Testing with @Configuration Classes and Profiles
    http://spring.io/blog/2011/06/21/spring-3-1-m2-testing-with-configuration-classes-and-profiles/

    Spring 3.1 M1: Introducing @Profile
    http://spring.io/blog/2011/02/14/spring-3-1-m1-introducing-profile/

    Spring Framework 3.1 M1 released
    http://spring.io/blog/2011/02/11/spring-framework-3-1-m1-released/

    11. Testing
    https://docs.spring.io/spring-framework/docs/3.2.0.RELEASE/spring-framework-reference/html/testing.html#testcontext-framework

    cbeams/spring-3.1-profiles-java: Sample demonstrating use of Spring 3.1's 'bean definition profiles' feature with @Configuration classes
    https://github.com/cbeams/spring-3.1-profiles-java

    Spring Framework Reference Documentation
    http://files.cnblogs.com/files/kongkaikai/spring-framework-reference.pdf

    Introduction · Spring Framework 4.x参考文档
    http://blog.didispace.com/books/spring-framework-4-reference/

     

    以下的作为参考

    Spring实战——Profile - JackieZheng - 博客园
    http://www.cnblogs.com/bigdataZJ/p/SpringInAction4.html

    通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换 - 许恕 - CSDN博客
    https://blog.csdn.net/xvshu/article/details/51133786

    详解Spring中的Profile - 王云十三 - 博客园
    https://www.cnblogs.com/SummerinShire/p/6392242.html

    详解Spring中的Profile - 刘剑峰的博客 - CSDN博客
    https://blog.csdn.net/jeffleo/article/details/71433655

    spring @profile注解的使用 - 止水的专栏 - CSDN博客
    https://blog.csdn.net/wild46cat/article/details/71189858

  • 相关阅读:
    git 从创建到推送到远程,到拉取,实操
    《React后台管理系统实战 :三》header组件:页面排版、天气请求接口及页面调用、时间格式化及使用定时器、退出函数
    《React后台管理系统实战 :一》:目录结构、引入antd、引入路由、写login页面、使用antd的form登录组件、form前台验证、高阶函数/组件
    《React后台管理系统实战 :二》antd左导航:cmd批量创建子/目录、用antd进行页面布局、分离左导航为单独组件、子路由、动态写左导航、css样式相对陷阱
    《React后台管理系统实战 :四》产品分类管理页:添加产品分类、修改(更新)产品分类
    go的变量与常量
    Go 语言最简单程序的结构
    go的安装与测试
    java
    go语言
  • 原文地址:https://www.cnblogs.com/rgqancy/p/9895316.html
Copyright © 2011-2022 走看看