這篇文章給大家分享的是有關(guān)spring注解之@profile的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的堯都網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
spring中@profile與maven中的profile很相似,通過配置來改變參數(shù)。
例如在開發(fā)環(huán)境與生產(chǎn)環(huán)境使用不同的參數(shù),可以配置兩套配置文件,通過@profile來激活需要的環(huán)境,但維護(hù)兩套配置文件不如maven中維護(hù)一套配置文件,在pom中通過profile來修改配置文件的參數(shù)來的實惠。
也有例外,比如我在開發(fā)中調(diào)用商城接口經(jīng)常不能返回我需要的數(shù)據(jù),每次都需要mock數(shù)據(jù),所以我寫了一個mock參數(shù)的借口調(diào)用類,在開發(fā)環(huán)境中就使用這個類,測試環(huán)境與生產(chǎn)環(huán)境則使用正常的借口調(diào)用類,這樣就不用每次開發(fā)的時候去手動改一些代碼。
注:@profile在3.2以后的版本支持方法級別和類級別,3.1版本只支持類級別。
言歸正傳,說下@profile使用方法。
一、注解配置
/** 配置生產(chǎn)環(huán)境調(diào)用類 **/ @service("productRpc") @profile("prop") public class ProductRpcImpl implements ProductRpc public String productBaseInfo(Long sku){ return productResource.queryBaseInfo(Long sku); } } /** 配置生產(chǎn)環(huán)境調(diào)用類 **/ @service("productRpc") @profile("dev") public class MockProductRpcImpl implements ProductRpc public String productBaseInfo(Long sku){ return “iphone7”; } } /** 調(diào)用類 **/ public class Demo(){ @Resource(name="productRpc") private ProductRpc productRpc; public void demo(){ String skuInfo = productRpc.productBaseInfo(123123L); logger.info(skuInfo); } }
這樣就完成了基于注解的profile配置。當(dāng)配置為生產(chǎn)環(huán)境的時候會正常調(diào)用接口,當(dāng)為開發(fā)環(huán)境的時候回調(diào)用mock接口。
二、XML配置
<!-- 開發(fā)環(huán)境 --> <beans profile="dev"> <bean id="beanname" class="com.pz.demo.ProductRPC"/> </beans> <!-- 生產(chǎn)環(huán)境 --> <beans profile="dev"> <bean id="beanname" class="com.pz.demo.MockProductRPC"/> </beans>
三、激活profile
注:spring在確定那個profile處于激活狀態(tài)的時,需要依賴兩個獨立的屬性:spring.profiles.active和spring.profile.default。如果設(shè)置了spring.profiles.actives屬性,那么它的值就會用來確定那個profile是激活的。如果沒有設(shè)置spring.profiles.active屬性的話,那spring將會查找spring.profiles.default的值。如果spring.profiles.active和spring.profiles.default均沒有設(shè)置。(紅色部分未在項目中驗證成功,待測試)
1.在servlet上下文中進(jìn)行配置(web.xml)
<context-param> <param-name>spring.profiles.default</param-name> <param-value>dev</param-value> </context-param>
2.作為DispatcherServlet的初始化參數(shù)
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring-servlet.xml</param-value> </init-param> <init-param> <param-name>spring.profiles.default</param-name> <param-value>dev</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
3.spring-junit使用@ActiveProfiles進(jìn)行激活
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "/spring-config.xml") @ActiveProfiles("dev") public class MainTest { ... }
4.作為JNDI條目
5.作為環(huán)境變量
6.作為JVM的系統(tǒng)屬性
感謝各位的閱讀!關(guān)于“spring注解之@profile的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
本文名稱:spring注解之@profile的示例分析
網(wǎng)頁鏈接:http://aaarwkj.com/article30/pjcopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站營銷、品牌網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)站制作、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)