Spring 3.1的功能,以后就不用為了區(qū)分Test, Dev, Production環(huán)境,搞幾個(gè)只有細(xì)微區(qū)別的application.xml, application-test.xml及引用它們的web.xml了。
首先,將applicationContext.xml中的namespace從3.0升級(jí)到3.1.xsd, 然后就可以在文件末尾加入不同環(huán)境的定義,比如不同的dataSource
- <beans profile="test">
- <jdbc:embedded-database id="dataSource">
- <jdbc:script location="classpath:com/bank/config/sql/schema.sql"/>
- </jdbc:embedded-database>
- </beans>
-
- <beans profile="production">
- <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/datasource"/>
- </beans>
2.在web.xml里,你需要定義使用的profile,最聰明的做法是定義成context-param,注意這里定義的是default值,在非生產(chǎn)環(huán)境,可以用系統(tǒng)變量"spring.profiles.active"進(jìn)行覆蓋。
- <context-param>
- <param-name>spring.profiles.default</param-name>
- <param-value>production</param-value>
- </context-param>
3.在其他地方進(jìn)行覆蓋
3.1 在development和functional test啟動(dòng)Jetty前設(shè)置系統(tǒng)變量
- System.setProperty("spring.profiles.active", "development");
- server.start()
3.2 在用到ApplicationContext的單元測(cè)試用例中,用 @ActiveProfiles定義
- @ContextConfiguration(locations = { "/applicationContext.xml" })
- @ActiveProfiles("test")
- public class AccountDaoTest extends SpringTxTestCase {
- }
在springside里有演示了production,development,test,functional三個(gè)環(huán)境, 大家可以根據(jù)實(shí)際情況組合自己的環(huán)境管理。另外可以與Spring的properties文件加載時(shí)可順位覆蓋的特性(放一些不在版本管理中的xx.local.properties文件),更好的支持本地開發(fā)環(huán)境,Jenkins上的functional test等其他環(huán)境。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。