Swagger2+SpringMVC 集成教程

# Swagger2 SpringMVC集成(非SpringBoot)

Swgger

做過(guò)手機(jī)端接口的同學(xué)們都有過(guò)歷史的經(jīng)歷,寫(xiě)完一個(gè)接口之后,Junit測(cè)試調(diào)試過(guò)后是偷,需要在接口文檔中詳細(xì)的去編寫(xiě)給客戶端開(kāi)發(fā)同學(xué)看的一份文檔淌实,而且稍微不注意就有可能寫(xiě)錯(cuò)一個(gè)字母,下面來(lái)段單口相聲(PS: 不會(huì)單口相聲的程序員不是好產(chǎn)品T桨堋4ビ住!)

場(chǎng)景:APP活動(dòng)接口
任務(wù):我究飞,APP開(kāi)發(fā)者
時(shí)間:及其困乏的下午

我:Hi置谦,哥們,接口開(kāi)發(fā)好了亿傅,文檔已經(jīng)在git上面更新媒峡。
APP開(kāi)發(fā)者:恩,我來(lái)請(qǐng)求一下葵擎。
......大約半分鐘后...
APP開(kāi)發(fā)者:接口請(qǐng)求不到谅阿。
我:(內(nèi)心:怎么可能,我都單元測(cè)試過(guò)了坪蚁,我確信我看的都是綠的啊奔穿,綠的啊,)你是不是寫(xiě)的有問(wèn)題敏晤,自己檢查一下哈(PS:怎么可能是我的問(wèn)題)贱田。

........大約一分鐘后......
APP開(kāi)發(fā)者:請(qǐng)求不到。

APP開(kāi)發(fā)者:請(qǐng)求不到嘴脾。

APP開(kāi)發(fā)者: 請(qǐng)求不到男摧。

我: 我來(lái)看一下(PS :我也是客戶端開(kāi)發(fā)者)蔬墩,沒(méi)什么問(wèn)題,怎么就請(qǐng)求不到呢耗拓,好吧我笑而不語(yǔ)的把/INfo 修改成/info SUCCESS !

也許上面的經(jīng)歷你也經(jīng)歷過(guò)拇颅,我也只是說(shuō)明一下有這么中情況,事情是真實(shí)的乔询,劇情嘛~ 每一個(gè)程序員都是一個(gè)優(yōu)秀的導(dǎo)演樟插,哈哈哈 ~ 下面切入整體,介紹一下怎么把Swagger2 和 SpringMVC 結(jié)合竿刁,看到最后的結(jié)果黄锤,你就知道Swagger2的有點(diǎn)了。
Swagger官網(wǎng)

集成步驟

  • 構(gòu)建Maven工程
  • 添加Swagger2依賴
         <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.5.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.6</version>
        </dependency>

* 配置Swagger2

        @Component
        @Configuration
        @EnableSwagger2
        @EnableWebMvc
        @ComponentScan("com.zhaoshuai.controller")
        public class Swagger2Config {
            @Bean
            public Docket createAPI() {
                return new Docket(DocumentationType.SWAGGER_2).forCodeGeneration(true).select().apis(RequestHandlerSelectors.any())
                        //過(guò)濾生成鏈接
                        .paths(PathSelectors.any()).build().apiInfo(apiInfo());
            }
        
            private ApiInfo apiInfo() {
        
                Contact contact=new Contact("趙帥","http://blog.maileba.top","zhaoshuaivov@163.com");
                ApiInfo apiInfo = new ApiInfoBuilder().license("Apache License Version 2.0").title("Swagger 集成測(cè)試").description("Swagger API Teste").contact(contact).version("1.0").build();
        
                return apiInfo;
            }
        
        }




* 設(shè)置spring-mvc.xml

<mvc:default-servlet-handler />
<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>



*  驗(yàn)證 http://ip:prot/project_name/swagger-ui.html 如果沒(méi)有project_name 則省去
    
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1477250-fe043120f9c8e279.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)





###附錄
*  pom.xml

       <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-    4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>

       <groupId>Swagger</groupId>
       <artifactId>swagger</artifactId>
       <version>1.0-SNAPSHOT</version>
       <dependencies>
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-web</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc-portlet</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-expression</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>

       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-aop</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-core</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-aspects</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>



       <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>3.1.0</version>
           <scope>provided</scope>
       </dependency>

       <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
       <dependency>
           <groupId>org.aspectj</groupId>
           <artifactId>aspectjweaver</artifactId>
           <version>1.8.9</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/asm/asm -->
       <dependency>
           <groupId>asm</groupId>
           <artifactId>asm</artifactId>
           <version>3.3.1</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/asm/asm-commons -->
       <dependency>
           <groupId>asm</groupId>
           <artifactId>asm-commons</artifactId>
           <version>3.3.1</version>
       </dependency>



       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-test</artifactId>
           <version>4.3.5.RELEASE</version>
       </dependency>



       <!-- https://mvnrepository.com/artifact/junit/junit -->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
           <scope>test</scope>
       </dependency>

       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger2</artifactId>
           <version>2.6.1</version>
       </dependency>
       <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-swagger-ui</artifactId>
           <version>2.6.1</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-core</artifactId>
           <version>2.8.6</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <version>2.8.6</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-annotations</artifactId>
           <version>2.8.6</version>
       </dependency>


       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
           <version>3.4</version>
       </dependency>




   </dependencies>






   <repositories><!-- 代碼庫(kù) -->
       <!--<repository>-->
           <!--<id>maven-ali</id>-->
           <!--<url>http://maven.aliyun.com/nexus/content/groups/public//</url>-->
           <!--<releases>-->
               <!--<enabled>true</enabled>-->
           <!--</releases>-->
           <!--<snapshots>-->
               <!--<enabled>true</enabled>-->
               <!--<updatePolicy>always</updatePolicy>-->
               <!--<checksumPolicy>fail</checksumPolicy>-->
           <!--</snapshots>-->
       <!--</repository>-->



       <repository>
           <id>central</id>
           <name>Maven Repository Switchboard</name>
           <layout>default</layout>
           <url>http://repo1.maven.org/maven2</url>
           <snapshots>
               <enabled>false</enabled>
           </snapshots>
       </repository>
   </repositories>

   <build>
       <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>2.5.1</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
              </configuration>
          </plugin>

       </plugins>
   </build>

   </project>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸵熟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子负甸,更是在濱河造成了極大的恐慌流强,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呻待,死亡現(xiàn)場(chǎng)離奇詭異打月,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)带污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門僵控,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鱼冀,你說(shuō)我怎么就攤上這事报破。” “怎么了千绪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵充易,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荸型,道長(zhǎng)盹靴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任瑞妇,我火速辦了婚禮稿静,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辕狰。我一直安慰自己改备,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布蔓倍。 她就那樣靜靜地躺著悬钳,像睡著了一般盐捷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上默勾,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天碉渡,我揣著相機(jī)與錄音,去河邊找鬼母剥。 笑死滞诺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的环疼。 我是一名探鬼主播铭段,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼秦爆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起憔披,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤等限,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后芬膝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體望门,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年锰霜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筹误。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡癣缅,死狀恐怖厨剪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情友存,我是刑警寧澤祷膳,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站屡立,受9級(jí)特大地震影響直晨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜膨俐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一勇皇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧焚刺,春花似錦敛摘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诅福。三九已至,卻和暖如春拖叙,著一層夾襖步出監(jiān)牢的瞬間氓润,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工薯鳍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咖气,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓挖滤,卻偏偏與公主長(zhǎng)得像崩溪,于是被迫代替她去往敵國(guó)和親伶唯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乳幸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容