Spring之項目中pofile的應用

    工程中,咱們必需要面對的一件事就是, 開發環境中使用的數據庫鏈接地址等與生產上的不一樣, 若是上線, 那麼咱們是否還要手動修改這些地址麼, 這樣作有不少弊端, 不方便, 這時咱們就能夠使用spring的profile來解決.java

1 修改web.xml

    在web.xml中加入以下List-1.1的內容.web

    List-1.1spring

<context-param>
    <param-name>spring.profiles.default</param-name>
    <!--生產環境時,改成production,開發時改成development-->
    <param-value>development</param-value>
</context-param>

2 resources下的properties文件

    以下圖2.1所示, development下放置的是開發時使用的配置; production下是生產上使用的配置.數據庫

                                                       

                                                                                           圖2.1app

    以後在spring的xml配置中,以下List-2.1所示, 重點是profile的值分別是development和production, 像List-1.1中那樣使用的就是開發環境的.單元測試

    List-2.1測試

<beans profile="development">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
            <list>
                <value>classpath:properties/development/db.properties</value>
                <value>classpath:properties/development/application.properties</value>
            </list>
        </property>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>
</beans>
<beans profile="production">
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="locations">
            <list>
                <value>classpath:properties/production/db.properties</value>
                <value>classpath:properties/production/application.properties</value>
            </list>
        </property>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>
</beans>

3 單元測試時如何配置

    單元測試時, 建一個TestBase類, 加上註解@ActiveProfiles, 值是development, 以後全部的單元測試類都繼承它, 就能夠了. spa

    List-3.13d

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:spring-context.xml"})
@ActiveProfiles("development")
public class TestBase {

}

                                                                                               

    這樣作了以後, 咱們上線須要將List-1.1中的值改成production就能夠了.code

相關文章
相關標籤/搜索