Spring Boot根據(jù)配置暴露接口的代碼實現(xiàn)
SpringBoot 在 org.springframework.boot.autoconfigure.condition
包下提供了很多 ConditionalOnXxx
格式的條件注解,如 ConditionalOnBean
、ConditionalOnMissingBean
、ConditionalOnClass
、ConditionalOnMissingClass
等。這些類名起的非常好,很直觀的可以理解其功能,具體使用哪些可以根據(jù)業(yè)務需要來選擇。
本示例要實現(xiàn)的效果:在非生產(chǎn)環(huán)境下暴露測試用的接口。
使用到的注解:@ConditionalOnExpression
和 ConditionalOnBean
。
首先定義一個 TestEnvironment
的類:
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.stereotype.Component; @Component @ConditionalOnExpression("'${my-app.env}' != 'PROD'") public class TestEnvironment { }
上面 @ConditionalOnExpression
注解參數(shù)中的 ${my-app.env}
為 SpEL 表達式,其值從配置文件讀取。'${my-app.env}' != 'PROD'
表示如果 my-app.env
配置項的值不為 PROD
,則該類生效。
因為多個地方可能會用到這個判斷表達式,所以將其定義為單獨的類,以方便使用和維護。
之后在測試用的 Controller
或 Service
上加上 @ConditionalOnBean(TestEnvironment.class)
注解即可。
import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 測試 * * @author JiaJia */ @Validated @RequiredArgsConstructor @RestController @ConditionalOnBean(TestEnvironment.class) @RequestMapping("test") public class TestController extends BaseController { private final TestService testService; /** * 支付測試接口 */ @PostMapping("/pay") public R<Void> pay(@Validated @RequestBody PayParam param) { return testService.pay(param); } }
對應的測試用 Service
也是相同的寫法:
@Service @RequiredArgsConstructor @ConditionalOnBean(TestEnvironment.class) public class TestServiceImpl implements TestService { // ... }
到此這篇關于Spring Boot根據(jù)配置暴露接口的代碼實現(xiàn)的文章就介紹到這了,更多相關Spring Boot暴露接口內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
微信小程序獲取手機網(wǎng)絡狀態(tài)的方法【附源碼下載】
這篇文章主要介紹了微信小程序獲取手機網(wǎng)絡狀態(tài)的方法,涉及微信小程序wx.getNetworkType函數(shù)檢查網(wǎng)絡連接狀態(tài)的相關使用技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12基于Bootstrap的標簽頁組件及bootstrap-tab使用說明
這篇文章主要介紹了基于Bootstrap的標簽頁組件及bootstrap-tab使用說明,需要的朋友可以參考下2017-07-07Javascript 正則表達式實現(xiàn)為數(shù)字添加千位分隔符
在項目中做貨幣轉換的時候經(jīng)常需要可以實現(xiàn)自動格式化輸入的數(shù)字,自動千位分隔符,在網(wǎng)上也看到一些其他網(wǎng)友的實現(xiàn)的代碼,感覺都不是太滿意,于是自己研究了下,分享給大家。2015-03-03