springmvc與swagger2整合
阿新 • • 發佈:2019-02-20
由於springboot整合swagger2非常簡單,現在springmvc在實際的專案當中非常多,所以有必要說一下springmvc和swagger2的整合,網上參照的資料非常多,大致都說的是一樣的,多次測試才成功;
swagger優點:
- 一個檔案就是一個文件
- 只針對API,而不針對特定的語言的API,很多自動生成API的工具基本都是隻針對特定的API的
- 支援Json和yaml來編寫API文件,並且支援匯出為json、yaml、markdown等格式
- 如果編寫好了API了,可以自動生成相應的SDK,沒錯,可能你的API介面程式碼還沒有開始寫,它就能幫你製作相應的SDK了,而且支援幾乎所有主流程式語言的SDK
- 支援自動生成大量主流程式語言/框架的server端
- 介面清晰,無論是editor的實時展示還是ui的展示都十分人性化,其他的API編寫工具基本上都做不到這一點,如果自己僅僅用markdown來編寫,又要糾結該如何展現,十分痛苦。
- 官網有直接的demo,甚至都可以不用自己搞一套伺服器
springmvc整合swagger2有兩種方式
1 在pom檔案中新增springfox-swagger-ui就無需從官網下載靜態資源了(推薦)
1.1 在pom檔案中新增依賴
<!-- swagger配置 --> <!--引入Spring依賴包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
1.2 新增配置開始swagger文件
package com.people2000.mzadmin.swaggerConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("醫谷藥區介面API 文件") .description("HTTP對外開放介面") .version("1.0.0") .termsOfServiceUrl("http://xxx.xxx.com") .license("LICENSE") .licenseUrl("http://xxx.xxx.com") .build(); } }
1.3 在spring-mvc中新增配置
<!-- swagger2 配置 -->
<!-- 預設的註解對映的支援 ,它會自動註冊DefaultAnnotationHandlerMapping 與AnnotationMethodHandlerAdapter -->
<mvc:annotation-driven />
<!-- 開啟自動掃描 掃描controller-->
<context:component-scan base-package="com.people2000.mzadmin"></context:component-scan>
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" />
<mvc:resources mapping="/webjars/**"
location="classpath:/META-INF/resources/webjars/" />
1.4 在web.xml中配置
<servlet>
<servlet-name>web</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-web.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<!-- <servlet-mapping>
<servlet-name>web</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>-->
<servlet-mapping>
<servlet-name>web</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- <filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping> -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.5 請求地址
localhost:port/專案名稱/swagger-ui.html
1.6 截圖
2在沒有springfox-swagger-ui的情況下必須下載靜態資源disc目錄下的匯入自己的專案中(不推薦繁瑣,站磁碟)