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

Java SpringBoot詳解集成以及配置Swagger流程

 更新時(shí)間:2021年10月27日 09:47:45   作者:龍弟-idea  
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步

一、swagge簡(jiǎn)介

前后端分離:

后端︰后端控制層,服務(wù)層,數(shù)據(jù)訪問層【后端團(tuán)隊(duì)】

前端:前端控制層,視圖層【前端團(tuán)隊(duì)】

前后端通過(guò)API進(jìn)行交互

前后端相對(duì)獨(dú)立且松耦合

產(chǎn)生問題:前后端集成,前端或者后端無(wú)法做到“及時(shí)協(xié)商,盡早解決”,最終導(dǎo)致問題集中爆發(fā)

解決方法:首先定義schema [ 計(jì)劃的提綱 ],并實(shí)時(shí)跟蹤最新的API,降低集成風(fēng)險(xiǎn)

前后端分離: 前端測(cè)試后端接口:postman
后端提供接口,需要實(shí)時(shí)更新最新的消息及改動(dòng)!

Swagger

  • 號(hào)稱世界上最流行的API框架
  • Restful Api 文檔在線自動(dòng)生成器 => API 文檔 與API 定義同步更新
  • 直接運(yùn)行,在線測(cè)試API
  • 支持多種語(yǔ)言 (如:Java,PHP等)
  • 官網(wǎng):API Documentation & Design Tools for Teams | Swagger

二、SpringBoot集成Swagger

1、新建一個(gè)SpringBoot-web項(xiàng)目

2、添加Maven依賴

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>

3、編寫HelloController,測(cè)試確保運(yùn)行成功!

4、要使用Swagger,我們需要編寫一個(gè)配置類-SwaggerConfig來(lái)配置 Swagger

@Configuration
@EnableSwagger2        //開啟Swagger2
public class SwaggerConfig {
    
}

5.訪問測(cè)試 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

三、配置Swagger

1、Swagger實(shí)例Bean是Docket,所以通過(guò)配置Docket實(shí)例來(lái)配置Swaggger。

//配置了Swagger的Docket的bean實(shí)例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2);
 
    }

2、可以通過(guò)apiInfo()屬性配置文檔信息

    //配置文檔信息
    private ApiInfo apiInfo() {
        Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "聯(lián)系人郵箱");
        return new ApiInfo(
                "龍弟的Swagger學(xué)習(xí)文檔", // 標(biāo)題
                "學(xué)習(xí)演示如何配置Swagger", // 描述
                "v1.0", // 版本
                "https://blog.csdn.net/weixin_48838340", // 組織鏈接
                contact, // 聯(lián)系人信息
                "Apach 2.0 許可", // 許可
                "許可鏈接", // 許可連接
                new ArrayList<>()// 擴(kuò)展
        );
    }
}

3、Docket 實(shí)例關(guān)聯(lián)上 apiInfo()

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }

4.重啟項(xiàng)目

四、配置掃描接口

構(gòu)建Docket時(shí)通過(guò)select()方法配置怎么掃描接口。

    //配置了Swagger的Docket的bean實(shí)例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
                  //any() // 掃描所有,項(xiàng)目中的所有接口都會(huì)被掃描到
                 // none() // 不掃描接口
        // withMethodAnnotation通過(guò)方法上的注解掃描,如withMethodAnnotation(GetMapping.class)只掃描get請(qǐng)求
        // 通過(guò)類上的注解掃描,如.withClassAnnotation(Controller.class)只掃描有controller注解的類中的接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                //path()  過(guò)濾什么路徑
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    };

五、配置Swagger開關(guān)

1、通過(guò)enable()方法配置是否啟用swagger

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false) //配置是否啟用Swagger,如果是false,在瀏覽器將無(wú)法訪問
                .select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通過(guò)path過(guò)濾,即這里只掃描請(qǐng)求以/longdi開頭的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

2.如何動(dòng)態(tài)配置當(dāng)項(xiàng)目處于test、dev環(huán)境時(shí)顯示swagger

    @Bean
    public Docket docket(Environment environment) {
        // 設(shè)置要顯示swagger的環(huán)境
        Profiles of = Profiles.of("dev", "test");
        // 判斷當(dāng)前是否處于該環(huán)境
        // 通過(guò) enable() 接收此參數(shù)判斷是否要顯示
        boolean b = environment.acceptsProfiles(of);
 
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(b) //配置是否啟用Swagger,如果是false,在瀏覽器將無(wú)法訪問
                .select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通過(guò)path過(guò)濾,即這里只掃描請(qǐng)求以/longdi開頭的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

六、配置API分組

1.如果沒有配置分組,默認(rèn)是default。通過(guò)groupName()方法即可配置分組:

    @Bean
    public Docket docket1(Environment environment) {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .groupName("A") ;// 配置分組
        // 省略配置....
    }

2.配置多個(gè)分組只需要配置多個(gè)docket即可

3.重啟看到下面效果

七、實(shí)體配置

1.新建一個(gè)實(shí)體類

@ApiModel為類添加注釋

@ApiModelProperty為類屬性添加注釋

2.只要這個(gè)實(shí)體在請(qǐng)求接口的返回值上(即使是泛型),都能映射到實(shí)體項(xiàng)中:

    //只要我們的接口中,返回值中存在實(shí)體類,它就會(huì)被掃描到Swagger中
    @PostMapping(value="/user")
    public User getUser(){
        return new User();
    }

3.查看效果

4.可以給請(qǐng)求的接口配置一些注釋

    //Operation接口,不是放在類上的,是方法
    @ApiOperation("龍弟的接口")
    @GetMapping("/hello2")
    public String kuang(@ApiParam("這個(gè)名字會(huì)被返回")String username){
        return "hello"+username;
    }

八、總結(jié):

1.我們可以通過(guò)Swagger給一些比較難理解的屬性或者接口,增加注釋信息

2接口文檔實(shí)時(shí)更新
3.可以在線測(cè)試

Swagger是一個(gè)優(yōu)秀的工具,幾乎所有大公司都有使用它

【注意點(diǎn)】在正式發(fā)布的時(shí)候,需要關(guān)閉Swagger! 因?yàn)槌鲇诎踩紤],同時(shí)節(jié)省運(yùn)行的內(nèi)存!

到此這篇關(guān)于Java SpringBoot詳解集成以及配置Swagger流程的文章就介紹到這了,更多相關(guān)Java SpringBoot Swagger內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用resty Quartz執(zhí)行定時(shí)任務(wù)的配置方法

    使用resty Quartz執(zhí)行定時(shí)任務(wù)的配置方法

    這篇文章主要為大家介紹了使用resty?Quartz來(lái)執(zhí)行定時(shí)任務(wù)的配置方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Spring 依賴注入的幾種方式詳解

    Spring 依賴注入的幾種方式詳解

    本篇文章主要介紹了Spring 依賴注入的幾種方式詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • SpringBoot輕松實(shí)現(xiàn)ip解析(含源碼)

    SpringBoot輕松實(shí)現(xiàn)ip解析(含源碼)

    IP地址一般以數(shù)字形式表示,如192.168.0.1,IP解析是將這個(gè)數(shù)字IP轉(zhuǎn)換為包含地區(qū)、城市、運(yùn)營(yíng)商等信息的字符串形式,如“廣東省深圳市 電信”,這樣更方便人理解和使用,本文給大家介紹了SpringBoot如何輕松實(shí)現(xiàn)ip解析,需要的朋友可以參考下
    2023-10-10
  • SpringBoot集成Spring Security的方法

    SpringBoot集成Spring Security的方法

    Spring security,是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段

    Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段

    這篇文章主要介紹了Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java基礎(chǔ)之位運(yùn)算知識(shí)總結(jié)

    Java基礎(chǔ)之位運(yùn)算知識(shí)總結(jié)

    最近接觸到了java位運(yùn)算,之前對(duì)位運(yùn)算的了解僅僅停留在表現(xiàn)結(jié)果上,乘2除以2,對(duì)背后的原理并不了解,現(xiàn)在學(xué)習(xí)記錄一下,需要的朋友可以參考下
    2021-05-05
  • Java設(shè)計(jì)模式之命令模式詳細(xì)解析

    Java設(shè)計(jì)模式之命令模式詳細(xì)解析

    這篇文章主要介紹了Java設(shè)計(jì)模式之命令模式詳細(xì)解析,命令模式將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求、隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象,同時(shí)也支持可撤銷的操作,需要的朋友可以參考下
    2024-01-01
  • 淺談Spring Data JPA與MyBatisPlus的比較

    淺談Spring Data JPA與MyBatisPlus的比較

    本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較
    2024-08-08
  • ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解

    ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解

    這篇文章主要為大家介紹了ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • java Clone接口和深拷貝詳解

    java Clone接口和深拷貝詳解

    今天小編就為大家分享一篇關(guān)于Java Clonable接口和深拷貝詳解上的深入了解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-08-08

最新評(píng)論

安龙县| 望谟县| 张家港市| 张北县| 都昌县| 巴林右旗| 湖州市| 侯马市| 文山县| 西乡县| 葫芦岛市| 社旗县| 汤原县| 正蓝旗| 冕宁县| 庆安县| 昌平区| 额敏县| 嘉峪关市| 响水县| 十堰市| 上林县| 洪泽县| 阜平县| 肥乡县| 澄江县| 丹巴县| 都匀市| 炉霍县| 鲁甸县| 黎城县| 新闻| 仁化县| 宜丰县| 明水县| 红原县| 中方县| 肥东县| 老河口市| 芮城县| 泰宁县|