當前位置:
首頁 >
SSM三大框架整合Springfox(Swagger2)详细解决方案
發布時間:2025/3/20
32
豆豆
生活随笔
收集整理的這篇文章主要介紹了
SSM三大框架整合Springfox(Swagger2)详细解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于項目中使用的是前后端分離,所以,頻繁的需要進行數據的交互和接口的調用,所以需要api文檔的使用,這樣就更加的方便,于是就找到了swagger這個東東,還是很好用。下面介紹一下如何整合到springmvc中
1、在maven的pom文件中引入springfox的依賴
<!--springfox的核心jar包--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency> <!--springfox-ui的jar包(里面包含了swagger的界面靜態文件)--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version> </dependency> <!--springfox依賴的jar包;如果你的項目中已經集成了無需重復--> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version> </dependency>2、在源碼目錄下創建一個單獨的package,然后創建SwaggerConfig.java文件
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; 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;/*重要!如果你的項目引入junit測試,此處需要使用@WebAppConfiguration,如果沒有使用junit使用@Configuration(很多的博客都沒有注明這個問題,為此我花了非常多的時間解決問題)*/ @WebAppConfiguration @EnableSwagger2//重要! @EnableWebMvc @ComponentScan(basePackages = "com.XXXXX.control")//掃描control所在的package請修改為你control所在package public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("XXX項目接口文檔").description("XXX項目接口測試").version("1.0.0").termsOfServiceUrl("").license("").licenseUrl("").build();} }3、在springMVC的配置文件中配置swagger
<!--重要!將你的SwaggerConfig配置類注入--> <bean class="com.XXXXX.config.SwaggerConfig"/> <!--重要!配置swagger資源不被攔截--> <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/" /> <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/" />4、修改web.xml文件中配置所有的請求都經DispatcherServlet處理
<servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern> </servlet-mapping>注意: 這個地方必須配置,如果你配置的是*.XXX的形式會出現api-docs訪問出錯,這就會導致swagger-ui找不到api的有效路徑。使swagger無法正常工作
5、controller的配置,配置測試swagger是否正常工作
/*** @author 歐陽思海* @date 2018/6/26 15:58*/ @Api(value = "/coupon",tags = "優惠券接口") @RestController public class CouponController extends BaseController {//log4j日志private static final Logger logger = LoggerFactory.getLogger(CouponController.class);@Autowiredprivate CouponService couponService;@RequestMapping(value = "/coupon/", method = RequestMethod.GET)@ApiResponses({@ApiResponse(code = 404, message = "服務器未找到資源"),@ApiResponse(code = 200, message = "請求成功"),@ApiResponse(code = 500, message = "服務器錯誤"),@ApiResponse(code = 401, message = "沒有訪問權限"),@ApiResponse(code = 403, message = "服務器拒絕訪問"),})@ApiOperation(value="查詢所有優惠券",httpMethod="GET",notes="查詢所有優惠券",response=Coupon.class)public ResponseEntity<CouponResult> selectCouponList(){List<Coupon> coupons = null;CouponResult couponResult = new CouponResult();try {coupons = couponService.getCouponList();couponResult.setList(coupons);if (coupons == null || coupons.size() == 0){return sendCouponResultResponseEntity(HttpStatusEnum.getIndexByName("NOT_FOUND"), HttpStatusEnum.getKeyByName("NOT_FOUND"), couponResult);}} catch (Exception e){e.printStackTrace();return sendCouponResultResponseEntity(HttpStatusEnum.getIndexByName("INTERNAL_SERVER_ERROR"), HttpStatusEnum.getKeyByName("INTERNAL_SERVER_ERROR"), couponResult);}return sendCouponResultResponseEntity(HttpStatusEnum.getIndexByName("OK"), HttpStatusEnum.getKeyByName("OK"), couponResult);}注解的詳細信息移步:傳送門
6、運行啟動項目
我這里使用的是maven+tomcat的插件來啟動項目的,不需要將其項目部署到本地tomcat。
訪問的路徑為:http://服務地址:端口/工程名/swagger-ui.html
運行效果如下:
如果你是使用本地的tomcat部署方式,方法如下:
參考資料
- https://blog.csdn.net/kwy15732621629/article/details/78827839
- https://blog.csdn.net/twomr/article/details/77101092
- https://blog.csdn.net/y534560449/article/details/53694443
總結
以上是生活随笔為你收集整理的SSM三大框架整合Springfox(Swagger2)详细解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lombok 介绍和使用详情
- 下一篇: SpringBoot 使用WebSock