當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
SSM三大框架整合Springfox(Swagger2)详细解决方案
生活随笔
收集整理的這篇文章主要介紹了
SSM三大框架整合Springfox(Swagger2)详细解决方案
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
由于項(xiàng)目中使用的是前后端分離,所以,頻繁的需要進(jìn)行數(shù)據(jù)的交互和接口的調(diào)用,所以需要api文檔的使用,這樣就更加的方便,于是就找到了swagger這個(gè)東東,還是很好用。下面介紹一下如何整合到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的界面靜態(tài)文件)--> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version> </dependency> <!--springfox依賴的jar包;如果你的項(xiàng)目中已經(jīng)集成了無(wú)需重復(fù)--> <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version> </dependency>2、在源碼目錄下創(chuàng)建一個(gè)單獨(dú)的package,然后創(chuàng)建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;/*重要!如果你的項(xiàng)目引入junit測(cè)試,此處需要使用@WebAppConfiguration,如果沒(méi)有使用junit使用@Configuration(很多的博客都沒(méi)有注明這個(gè)問(wèn)題,為此我花了非常多的時(shí)間解決問(wèn)題)*/ @WebAppConfiguration @EnableSwagger2//重要! @EnableWebMvc @ComponentScan(basePackages = "com.XXXXX.control")//掃描control所在的package請(qǐng)修改為你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項(xiàng)目接口文檔").description("XXX項(xiàng)目接口測(cè)試").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文件中配置所有的請(qǐng)求都經(jīng)DispatcherServlet處理
<servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern> </servlet-mapping>注意: 這個(gè)地方必須配置,如果你配置的是*.XXX的形式會(huì)出現(xiàn)api-docs訪問(wèn)出錯(cuò),這就會(huì)導(dǎo)致swagger-ui找不到api的有效路徑。使swagger無(wú)法正常工作
5、controller的配置,配置測(cè)試swagger是否正常工作
/*** @author 歐陽(yáng)思海* @date 2018/6/26 15:58*/ @Api(value = "/coupon",tags = "優(yōu)惠券接口") @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 = "服務(wù)器未找到資源"),@ApiResponse(code = 200, message = "請(qǐng)求成功"),@ApiResponse(code = 500, message = "服務(wù)器錯(cuò)誤"),@ApiResponse(code = 401, message = "沒(méi)有訪問(wèn)權(quán)限"),@ApiResponse(code = 403, message = "服務(wù)器拒絕訪問(wèn)"),})@ApiOperation(value="查詢所有優(yōu)惠券",httpMethod="GET",notes="查詢所有優(yōu)惠券",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);}注解的詳細(xì)信息移步:傳送門(mén)
6、運(yùn)行啟動(dòng)項(xiàng)目
我這里使用的是maven+tomcat的插件來(lái)啟動(dòng)項(xiàng)目的,不需要將其項(xiàng)目部署到本地tomcat。
訪問(wèn)的路徑為:http://服務(wù)地址:端口/工程名/swagger-ui.html
運(yùn)行效果如下:
如果你是使用本地的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
總結(jié)
以上是生活随笔為你收集整理的SSM三大框架整合Springfox(Swagger2)详细解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Lombok 介绍和使用详情
- 下一篇: gradle idea java ssm