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)详细解决方案相关推荐
- (Spring+SpringMVC+MyBatis)SSM三大框架整合教程
目录 一.基本概念 1.Spring 2.SpringMVC 3.MyBatis 二.开发环境搭建 三.Maven Web项目创建 四.SSM整合 1.Maven引入需要的JAR包 2.Spring与 ...
- 通俗易懂-SSM三大框架整合案例(SpringMVC+Spring+Mybatis)
前言: 学习B站UP狂神说视频笔记整理视频链接 相关代码已经上传至码云:码云链接 前期准备 项目介绍 demo项目是一个简单的图书管理系统,主要功能为表单数据的增删改查 Web端使用JSP+Boots ...
- SSM三大框架整合(Spring+SpringMVC+MyBatis)
文章目录 SSM整合 一.导入依赖 1.1 Spring依赖 1.2 SpringMVC依赖 1.3 MyBatis依赖 二.配置文件 2.0 Web.xml 配置文件 2.1 Spring的配置文件 ...
- 三大框架整合步骤(详细)
以是从struts2-------->>>hibernate--------------->>>>spring的整合过程. 环境:tomcat7+MyEcli ...
- SSM三大框架整合原理及步骤
SSM分层作用 SpringMVC:web层,相当于controller(等价于struts的action)主要进行页面的 请求接受与响应. 组件包括:前端控制器,处理器映射器,处理器适配器,视图解析 ...
- java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...
- java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...
详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...
- ssh备考-08 SSH三大框架整合
可耻+可笑 救不活了的双非 算了,本来也就是过家家 目录 学习过程一步一步搭建框架,然后写需求 每次专注一个需求 每次最好也都自己搭建一次框架 可以照着文档模板复制粘贴 但是得自己搭建 一.新建项目 ...
- SSM三大框架+SpringMVC的工作原理及其流程
SSM三大框架+SpringMVC的工作原理及其流程 一.SSM中各层作用及关系 1.持久层:DAO层(mapper层)(属于mybatis模块) DAO层(Mapper层):主要负责与数据库 ...
最新文章
- java火箭应用_从C++入手,探寻java的特点
- CISCO路由器ADSL拨号配置
- 操作系统中的进程与线程
- Eclipse安装GoClipse
- MySQL利用存储过程清除所有表中的所有记录
- POJ - 2142 The Balance(扩展欧几里得)
- python2 http请求post、get
- mybatis mapper配置 bigint_Mybatis-Plus入门
- 修改wifi密码后连接不上服务器,WiFi修改密码后,手机电脑连接不上
- WCF Service Configuration Editor的使用
- CS API 测试3
- BPT(Business Process Testing)
- js变量按照存储方式区分,有哪些类型,并表述其特点
- AMOS软件介绍开篇;草堂君给数据分析学习者的几点建议
- 4.14 在数字的左侧进行补零 [原创Excel教程]
- BUUCTF WEB Ezpop
- 报错 Tensorflow 2.0 Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
- 一维码二维码的生成及打印
- Python图形处理
- openwrt 19 overlay 空间不足_新桥胡同拆除19处违建!背街小巷“瘦身”后宽敞多了...
热门文章
- 回调函数到底是怎么一回事呢
- C++ Primer 5th笔记(chap 19 特殊工具与技术)局部类
- C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析
- BUUCTF-[网鼎杯 2020 青龙组]singal——angr学习记录
- optee3.12.0 qemu_v8的环境搭建篇(ubuntu20.04)
- optee中的thread_vector_table线程向量表
- CFileDialog 打开多个目录下的多个文件
- SEH反调试(SetUnhandledExceptionFilter)
- VC6程序申请管理员权限
- 看完就能知道渗透测试的技术结构