溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

spring注解之@profile的示例分析

發(fā)布時(shí)間:2021-08-05 09:37:52 來(lái)源:億速云 閱讀:161 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)spring注解之@profile的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

spring中@profile與maven中的profile很相似,通過(guò)配置來(lái)改變參數(shù)。

例如在開(kāi)發(fā)環(huán)境與生產(chǎn)環(huán)境使用不同的參數(shù),可以配置兩套配置文件,通過(guò)@profile來(lái)激活需要的環(huán)境,但維護(hù)兩套配置文件不如maven中維護(hù)一套配置文件,在pom中通過(guò)profile來(lái)修改配置文件的參數(shù)來(lái)的實(shí)惠。

也有例外,比如我在開(kāi)發(fā)中調(diào)用商城接口經(jīng)常不能返回我需要的數(shù)據(jù),每次都需要mock數(shù)據(jù),所以我寫(xiě)了一個(gè)mock參數(shù)的借口調(diào)用類(lèi),在開(kāi)發(fā)環(huán)境中就使用這個(gè)類(lèi),測(cè)試環(huán)境與生產(chǎn)環(huán)境則使用正常的借口調(diào)用類(lèi),這樣就不用每次開(kāi)發(fā)的時(shí)候去手動(dòng)改一些代碼。

注:@profile在3.2以后的版本支持方法級(jí)別和類(lèi)級(jí)別,3.1版本只支持類(lèi)級(jí)別。

言歸正傳,說(shuō)下@profile使用方法。

一、注解配置

/** 配置生產(chǎn)環(huán)境調(diào)用類(lèi) **/ 
@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)用類(lèi) **/ 
@service("productRpc") 
@profile("dev") 
public class MockProductRpcImpl implements ProductRpc 
  public String productBaseInfo(Long sku){ 
    return “iphone7”; 
  } 
} 
 
/** 調(diào)用類(lèi) **/ 
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)境的時(shí)候會(huì)正常調(diào)用接口,當(dāng)為開(kāi)發(fā)環(huán)境的時(shí)候回調(diào)用mock接口。

二、XML配置

<!-- 開(kāi)發(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在確定那個(gè)profile處于激活狀態(tài)的時(shí),需要依賴(lài)兩個(gè)獨(dú)立的屬性:spring.profiles.active和spring.profile.default。如果設(shè)置了spring.profiles.actives屬性,那么它的值就會(huì)用來(lái)確定那個(gè)profile是激活的。如果沒(méi)有設(shè)置spring.profiles.active屬性的話(huà),那spring將會(huì)查找spring.profiles.default的值。如果spring.profiles.active和spring.profiles.default均沒(méi)有設(shè)置。(紅色部分未在項(xiàng)目中驗(yàn)證成功,待測(cè)試)

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)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI