由于项目中使用的是前后端分离,所以,频繁的需要进行数据的交互和接口的调用,所以需要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)详细解决方案相关推荐

  1. (Spring+SpringMVC+MyBatis)SSM三大框架整合教程

    目录 一.基本概念 1.Spring 2.SpringMVC 3.MyBatis 二.开发环境搭建 三.Maven Web项目创建 四.SSM整合 1.Maven引入需要的JAR包 2.Spring与 ...

  2. 通俗易懂-SSM三大框架整合案例(SpringMVC+Spring+Mybatis)

    前言: 学习B站UP狂神说视频笔记整理视频链接 相关代码已经上传至码云:码云链接 前期准备 项目介绍 demo项目是一个简单的图书管理系统,主要功能为表单数据的增删改查 Web端使用JSP+Boots ...

  3. SSM三大框架整合(Spring+SpringMVC+MyBatis)

    文章目录 SSM整合 一.导入依赖 1.1 Spring依赖 1.2 SpringMVC依赖 1.3 MyBatis依赖 二.配置文件 2.0 Web.xml 配置文件 2.1 Spring的配置文件 ...

  4. 三大框架整合步骤(详细)

    以是从struts2-------->>>hibernate--------------->>>>spring的整合过程. 环境:tomcat7+MyEcli ...

  5. SSM三大框架整合原理及步骤

    SSM分层作用 SpringMVC:web层,相当于controller(等价于struts的action)主要进行页面的 请求接受与响应. 组件包括:前端控制器,处理器映射器,处理器适配器,视图解析 ...

  6. java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...

  7. java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

    详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...

  8. ssh备考-08 SSH三大框架整合

    可耻+可笑 救不活了的双非 算了,本来也就是过家家 目录 学习过程一步一步搭建框架,然后写需求 每次专注一个需求  每次最好也都自己搭建一次框架 可以照着文档模板复制粘贴 但是得自己搭建 一.新建项目 ...

  9. SSM三大框架+SpringMVC的工作原理及其流程

    SSM三大框架+SpringMVC的工作原理及其流程 一.SSM中各层作用及关系 1.持久层:DAO层(mapper层)(属于mybatis模块)     DAO层(Mapper层):主要负责与数据库 ...

最新文章

  1. java火箭应用_从C++入手,探寻java的特点
  2. CISCO路由器ADSL拨号配置
  3. 操作系统中的进程与线程
  4. Eclipse安装GoClipse
  5. MySQL利用存储过程清除所有表中的所有记录
  6. POJ - 2142 The Balance(扩展欧几里得)
  7. python2 http请求post、get
  8. mybatis mapper配置 bigint_Mybatis-Plus入门
  9. 修改wifi密码后连接不上服务器,WiFi修改密码后,手机电脑连接不上
  10. WCF Service Configuration Editor的使用
  11. CS API 测试3
  12. BPT(Business Process Testing)
  13. js变量按照存储方式区分,有哪些类型,并表述其特点
  14. AMOS软件介绍开篇;草堂君给数据分析学习者的几点建议
  15. 4.14 在数字的左侧进行补零 [原创Excel教程]
  16. BUUCTF WEB Ezpop
  17. 报错 Tensorflow 2.0 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
  18. 一维码二维码的生成及打印
  19. Python图形处理
  20. openwrt 19 overlay 空间不足_新桥胡同拆除19处违建!背街小巷“瘦身”后宽敞多了...

热门文章

  1. 回调函数到底是怎么一回事呢
  2. C++ Primer 5th笔记(chap 19 特殊工具与技术)局部类
  3. C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析
  4. BUUCTF-[网鼎杯 2020 青龙组]singal——angr学习记录
  5. optee3.12.0 qemu_v8的环境搭建篇(ubuntu20.04)
  6. optee中的thread_vector_table线程向量表
  7. CFileDialog 打开多个目录下的多个文件
  8. SEH反调试(SetUnhandledExceptionFilter)
  9. VC6程序申请管理员权限
  10. 看完就能知道渗透测试的技术结构