ApplicationContext中profile指定解读

如果项目需要在开发环境,测试环境,演示环境或生产环境上相互的切换,如何配置web.xml和ApplicationContext.xml文件。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>XXX</display-name>
    <!-- Define the pushlet servlet <servlet> <servlet-name>pushlet</servlet-name>
        <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class> <load-on-startup>1</load-on-startup>
        </servlet> -->
    <!-- The pushlet <servlet-mapping> <servlet-name>pushlet</servlet-name>
        <url-pattern>/pushlet.srv</url-pattern> </servlet-mapping> -->
    <servlet>
         <servlet-name>log4j-init</servlet-name>
         <servlet-class>com.cmcc.util.Log4jInit</servlet-class>
         <init-param>
           <param-name>log4j</param-name>
           <param-value>WEB-INF/classes/log4j.properties</param-value>
         </init-param>
         <load-on-startup>0</load-on-startup>
    </servlet>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:spring/applicationContext.xml,
            classpath*:spring/applicationContext-extend.xml
        </param-value>
    </context-param>
    <!-- Spring Context的默认Profile,每次部署不同的环境需要改成对应的配置 -->
    <context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>play</param-value>
        <!-- <param-value>${profile.active}</param-value>-->
    </context-param>
。。。。。
</web-app>

 

定义好

<context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>play</param-value>
        <!-- <param-value>${profile.active}</param-value>-->
    </context-param>

 

然后在ApplicationContext.xml文件中配置

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task-4.0.xsd"
    default-lazy-init="false">
    <description>Spring公共配置 </description>
    <context:component-scan base-package="com.cmcc.service,com.cmcc.dao,com.cmcc.exception,com.cmcc.util" />
    <!-- <util:properties id="dataSourceProps" location="classpath:system.properties"/> -->
    <!--启用aop代理  -->
    <aop:aspectj-autoproxy/>
    <!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <!-- Connection Info -->
        <property name="driverClassName" value="#{loadProperties['jdbc.driver']}" />
        <property name="url" value="#{loadProperties['jdbc.url']}" />
        <property name="username" value="#{loadProperties['jdbc.username']}" />
        <property name="password" value="#{loadProperties['jdbc.password']}" />
        <property name="defaultAutoCommit" value="false" />
        <!-- Connection Pooling Info -->
                <property name="maxActive" value="#{loadProperties['dbcp.maxActive']}" />
        <property name="maxIdle" value="#{loadProperties['dbcp.maxIdle']}" />
        <property name="maxWait" value="#{loadProperties['dbcp.maxWait']}" />
        <property name="removeAbandoned" value="#{loadProperties['dbcp.removeAbandoned']}" />
        <property name="logAbandoned" value="#{loadProperties['dbcp.logAbandoned']}" />
        <property name="removeAbandonedTimeout" value="#{loadProperties['dbcp.removeAbandonedTimeout']}" />
    </bean>
    。。。。。。

    <!-- production环境 -->
    <beans profile="production">
        <util:properties id="loadProperties" location="classpath:system.properties"/>   
    </beans>
    <!-- local development环境 -->
    <beans profile="local">   
        <util:properties id="loadProperties" location="classpath:application.local.properties"/>
    </beans>
    <!-- test环境 -->
    <beans profile="test">
        <util:properties id="loadProperties" location="classpath:application.test.properties"/>
    </beans>
    <!-- show环境 -->
    <beans profile="show">
        <util:properties id="loadProperties" location="classpath:application.show.properties"/>
    </beans>
    <!-- play环境 -->
    <beans profile="play">
        <util:properties id="loadProperties" location="classpath:application.play.properties"/>
    </beans>

。。。。。。。
</beans>

即可

 

你可能感兴趣的:(ApplicationContext中profile指定解读)