最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swagger實(shí)現(xiàn)動(dòng)態(tài)條件注入與全局?jǐn)r截功能詳細(xì)流程

 更新時(shí)間:2023年01月30日 10:50:06   作者:畢小寶  
這篇文章主要介紹了Swagger實(shí)現(xiàn)動(dòng)態(tài)條件注入與全局?jǐn)r截功能詳細(xì)流程,Swagger 可以提供 API 操作的測(cè)試文檔,本文記錄 Swagger 使用過程中遇到的小問題

背景

Swagger 可以提供 API 操作的測(cè)試文檔,本文記錄 Swagger 使用過程中遇到的兩個(gè)小問題:

  • 全局響應(yīng)結(jié)果進(jìn)行包裝后導(dǎo)致 Swagger 請(qǐng)求響應(yīng)結(jié)果無法解析,如果項(xiàng)目中配置了 ResponseBodyAdvice 實(shí)現(xiàn)類,重寫了 beforeBodyWrite 方法對(duì)響應(yīng)結(jié)果進(jìn)行統(tǒng)一時(shí),應(yīng)該排除 Swagger2 的兩個(gè) URL v2/api-docsswagger-resources
  • Swagger 注入條件區(qū)分測(cè)試和生產(chǎn)環(huán)境的配置的 ETL 不同語法對(duì)默認(rèn)無配置的處理結(jié)果。

Swagger2 使用流程

Swagger 用法很簡(jiǎn)單,加入引用,一個(gè)配置就可以為應(yīng)用提供接口測(cè)試界面。

第一步,引入依賴。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.8.5</version>
</dependency>

第二步,添加 Swagger 配置類。

@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
@ConditionalOnExpression("'${swagger.enable}'.equalsIgnoreCase('true')")
public class Swagger2Config {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("XXX 文檔")
                .version("1.0")
                .build();
    }
}

第三步,為 Web 請(qǐng)求設(shè)置 Api 配置。

@GetMapping("/set")
@ApiOperation(value = "設(shè)置 Session")
public Object Index(HttpServletRequest request){
    request.getSession().setAttribute("userUid", "111111");
    return request.getSession().getAttribute("userUid");
}

條件配置分析

@ConditionalOnExpression("'${swagger.enable}'.equalsIgnoreCase('true')")

這種方式,表達(dá)式成立的條件有兩項(xiàng) swagger.enable 必須配置,且值為 true 時(shí),才會(huì)成立。

另外一種寫法:

@ConditionalOnExpression("${swagger.enable:true}")

如果未配置屬性 swagger.enable,那么根據(jù) ConditionalOnExpression 注解的默認(rèn)值是 true ,所以就會(huì)執(zhí)行注解配置。

啟示錄

為了方便開發(fā)測(cè)試,默認(rèn)無配置時(shí)視為滿足條件,生產(chǎn)環(huán)境下配置值為 false 是可以的。

到此這篇關(guān)于Swagger實(shí)現(xiàn)動(dòng)態(tài)條件注入與全局?jǐn)r截功能詳細(xì)流程的文章就介紹到這了,更多相關(guān)Swagger動(dòng)態(tài)條件注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java Selenium中的鼠標(biāo)控制操作

    詳解Java Selenium中的鼠標(biāo)控制操作

    本文主要講解如何用java Selenium 控制鼠標(biāo)在瀏覽器上的操作方法。主要列舉的代碼示例,大家可以自己上代碼執(zhí)行操作看效果,希望對(duì)大家有所幫助
    2023-01-01
  • 詳解spring boot應(yīng)用啟動(dòng)原理分析

    詳解spring boot應(yīng)用啟動(dòng)原理分析

    這篇文章主要介紹了詳解spring boot應(yīng)用啟動(dòng)原理分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作

    JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操

    這篇文章主要介紹了JAVA8 List<List<Integer>> list中再裝一個(gè)list轉(zhuǎn)成一個(gè)list操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java反射機(jī)制的講解

    Java反射機(jī)制的講解

    今天小編就為大家分享一篇關(guān)于Java反射機(jī)制的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 如何在springboot中引入?yún)?shù)校驗(yàn)

    如何在springboot中引入?yún)?shù)校驗(yàn)

    一般我們判斷前端傳過來的參數(shù),需要對(duì)某些值進(jìn)行判斷,是否滿足條件,而springboot相關(guān)的參數(shù)校驗(yàn)注解,可以解決我們這個(gè)問題,本文給大家介紹如何在springboot中引入?yún)?shù)校驗(yàn),感興趣的朋友一起看看吧
    2023-12-12
  • Java設(shè)計(jì)模式之橋接模式詳解(Bridge Pattern)

    Java設(shè)計(jì)模式之橋接模式詳解(Bridge Pattern)

    橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在將抽象部分與其實(shí)現(xiàn)部分分離,從而使兩者可以獨(dú)立地變化,橋接模式通過組合關(guān)系代替繼承關(guān)系,將抽象和實(shí)現(xiàn)解耦,使代碼更具擴(kuò)展性和維護(hù)性
    2025-02-02
  • RabbitMQ簡(jiǎn)單隊(duì)列實(shí)例及原理解析

    RabbitMQ簡(jiǎn)單隊(duì)列實(shí)例及原理解析

    這篇文章主要介紹了RabbitMQ簡(jiǎn)單隊(duì)列實(shí)例及原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • springboot 設(shè)置server.port不生效的原因及解決

    springboot 設(shè)置server.port不生效的原因及解決

    這篇文章主要介紹了springboot 設(shè)置server.port不生效的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java使用ZipInputStream實(shí)現(xiàn)讀取和寫入zip文件

    java使用ZipInputStream實(shí)現(xiàn)讀取和寫入zip文件

    zip文檔可以以壓縮格式存儲(chǔ)一個(gè)或多個(gè)文件,本文主要為大家詳細(xì)介紹了java如何使用ZipInputStream讀取Zip文檔與寫入,需要的小伙伴可以參考下
    2023-11-11
  • Java二叉樹的四種遍歷方式詳解

    Java二叉樹的四種遍歷方式詳解

    這篇文章主要介紹了Java二叉樹的四種遍歷,二叉樹的遍歷可以分為前序、中序、后序、層次遍歷,需要的朋友可以參考下
    2021-11-11

最新評(píng)論

久治县| 雷州市| 都安| 甘泉县| 蓝田县| 台山市| 马边| 阳谷县| 崇文区| 蓝山县| 东乡族自治县| 新晃| 东安县| 凤庆县| 延安市| 禹州市| 祁东县| 宁远县| 常德市| 苍梧县| 万宁市| 南乐县| 图片| 天全县| 布拖县| 湖南省| 桦川县| 六盘水市| 察雅县| 策勒县| 双流县| 图片| 乐平市| 天峻县| 太原市| 武宣县| 塔城市| 汾西县| 昌乐县| 册亨县| 尖扎县|