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