Spring Boot 入门(七):集成 swagger2

本片文章是基于前一篇写的,《Spring Boot 入门(六):集成 treetable 和 zTree 实现树形图》,本篇主要介绍了spring boot集成swagger2。关于swagger的介绍,自行谷歌。我这里有在网上购买的相关视频资料,有需要可以呼叫我。

1.引入相关依赖

 1  <dependency>
 2             <groupId>io.springfox</groupId>
 3             <artifactId>springfox-swagger2</artifactId>
 4             <version>2.4.0</version>
 5         </dependency>
 6         <dependency>
 7             <groupId>io.springfox</groupId>
 8             <artifactId>springfox-swagger-ui</artifactId>
 9             <version>2.4.0</version>
10         </dependency>
11
12         <dependency>
13             <groupId>org.apache.directory.studio</groupId>
14             <artifactId>org.apache.commons.codec</artifactId>
15             <version>1.8</version>
16         </dependency>

很多地方只引入了前2个依赖,这里如果缺少第3个依赖,容易产生一个异常: java.lang.NoSuchMethodError: com.google.common.collect.FluentIterable.toList()Lcom/google/common/collect/ImmutableList;

2.增加conf

 3 import io.swagger.annotations.ApiOperation;
 4 import org.springframework.context.annotation.Bean;
 5 import org.springframework.context.annotation.Configuration;
 6 import springfox.documentation.builders.ApiInfoBuilder;
 7 import springfox.documentation.builders.PathSelectors;
 8 import springfox.documentation.builders.RequestHandlerSelectors;
 9 import springfox.documentation.service.ApiInfo;
10 import springfox.documentation.service.Contact;
11 import springfox.documentation.spi.DocumentationType;
12 import springfox.documentation.spring.web.plugins.Docket;
13 import springfox.documentation.swagger2.annotations.EnableSwagger2;
14
15 /**
16  * @program:
17  * @description: Swagger配置
18  * @author: DZ
19  * @create: 2019-10-14 18:41
20  **/
21 @Configuration
22 @EnableSwagger2
23 public class SwaggerConfig {
24
25     @Bean
26     public Docket createRestApi() {
27         return new Docket(DocumentationType.SWAGGER_2)
28                 .apiInfo(apiInfo())
29                 .select()
30                 // 设置basePackage会将包下的所有类的所有方法作为api
31 //                .apis(RequestHandlerSelectors.basePackage("com.example.demo2.controller"))
32                 //只有标记了@ApiOperation的方法才会暴露出给swagger
33                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
34                 .paths(PathSelectors.any())
35                 .build();
36     }
37
38
39     private ApiInfo apiInfo() {
40         //swagger2中termsOfServiceUrl方法已经启用,且contact的参数时一个对象,弃用字符串了
41         Contact contact=new Contact("dz",
42                 "https://www.cnblogs.com/dz-boss/p/11729334.html","[email protected]");
43         return new ApiInfoBuilder()
44                 .title("xx项目说明文档")
45                 .description("xx系统说明")
46                 //.termsOfServiceUrl("https://www.cnblogs.com/dz-boss/p/11729334.html")
47                 .contact(contact)
48                 .version("1.0")
49                 .build();
50     }
51
52 }

其中Contact构造函数中3个参数依次是:作者,地址,邮箱

3.增加注解

 6 import io.swagger.annotations.*;
 7 import lombok.extern.slf4j.Slf4j;
 8 import org.springframework.amqp.rabbit.connection.CorrelationData;
 9 import org.springframework.amqp.rabbit.core.RabbitTemplate;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.beans.factory.annotation.Value;
12 import org.springframework.stereotype.Controller;
13 import org.springframework.web.bind.annotation.*;
14
15 /**
16  * @program:
17  * @description:
18  * @author: DZ
19  * @create: 2019-10-09 15:27
20  **/
21 @Api(value = "API接口", tags = "Test", description = "API接口")
22 @Slf4j25 @Controller
26 public class Test {
27
28     //测试接口
29     @ApiOperation(value = "测试", notes = "测试接口")
30     @ApiImplicitParams({
31             @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "String", paramType = "query", defaultValue = "123"),
32             @ApiImplicitParam(name = "userId", value = "用户id", required = false, dataType = "String", paramType = "query", defaultValue = "654")
33     })
34     @ApiResponses(value = {
35             @ApiResponse(code = 200, message = "Successful — 请求已完成"),
36             @ApiResponse(code = 400, message = "请求中有语法问题,或不能满足请求"),
37             @ApiResponse(code = 401, message = "未授权客户机访问数据"),
38             @ApiResponse(code = 404, message = "服务器找不到给定的资源;文档不存在"),
39             @ApiResponse(code = 500, message = "服务器不能完成请求")}
40     )
41     @ResponseBody
42     @RequestMapping(value = "index", method = RequestMethod.POST)
43     public String test(@RequestParam("id") String id, @RequestParam(value = "userId", required = false) String userId) {
44         return "";
45     }
46 }

其中关键的注解为类的注解:@Api和方法的注解@ApiOperation,增加了这2个注解,就可以通过swagger的方式访问;

@ApiImplicitParams和@ApiResponses这2个注解主要对入参和出参进行增加中文注解,可有可无。

最后还需要在启动类增加注解@EnableSwagger2

原文地址:https://www.cnblogs.com/dz-boss/p/11729334.html

时间: 2024-10-07 14:43:57

Spring Boot 入门(七):集成 swagger2的相关文章

Spring Boot 入门(八):集成RabbitMQ消息队列

本片文章续<Spring Boot 入门(七):集成 swagger2>,关于RabbitMQ的介绍请参考<java基础(六):RabbitMQ 入门> 1.增加依赖 1 <!--rabbitMq--> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-amqp</artifac

Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件

上一篇文章,写了如何搭建一个简单的Spring boot项目,本篇是接着上一篇文章写得:Spring boot入门:快速搭建Spring boot项目(一),主要是spring boot集成mybatis和pagehelper 关于mybatis和pagehelper的介绍,可以自行博客,网上很多类似的博客,这里,我直接上代码和项目搭建教程. 1.配置文件:在配置文件application.yml中配置MySql数据库连接池和Mybatis扫描包以及PageHelper分页插件 1 mybati

Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示

关于SpringBoot和PageHelper,前篇博客已经介绍过Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件,前篇博客大致讲述了SpringBoot如何集成Mybatis和Pagehelper,但是没有做出实际的范例,本篇博客是连接上一篇写的.通过AdminLTE前端框架,利用DataTable和PageHelper进行分页显示,通过对用户列表的增删改查操作,演示DataTable和PageHelper的使用. (1)Admi

Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理

本文是接着上篇博客写的:Spring boot 入门(三):SpringBoot 集成结合 AdminLTE(Freemarker),利用 generate 自动生成代码,利用 DataTable 和 PageHelper 进行分页显示.按照前面的博客,已经可以搭建一个简单的 Spring Boot 系统,本篇博客继续对此系统进行改造,主要集成了 Shiro 权限认证框架,关于 Shiro 部分,在本人之前的博客(认证与Shiro安全框架)有介绍到,这里就不做累赘的介绍. 此系列的博客为实践部分

Spring Boot 入门(五):集成 AOP 进行日志管理

本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页查询,Generator 代码自动生成器,Shiro登录及权限管理.本篇博客主要是集成 AOP 进行日志管理 1.导入 jar 包 1 <!-- aop --> 2 <dependency> 3 <groupId>org.springframework.boot</g

Spring Boot 入门(六):集成 treetable 和 zTree 实现树形图

本篇文章是接着Spring Boot 入门(五):集成 AOP 进行日志管理写的,主要集成了树形图,在部门列表或者权限列表中,树形图经常被用上.主要是根据相应的 API 凭借 html 字符串 1.treetable 1 <link href="/plugins/treeTable/themes/default/treeTable.css" rel="stylesheet" type="text/css" /> 2 <scrip

Spring Boot 入门(九):集成Quartz定时任务

本片文章续<Spring Boot 入门(八):集成RabbitMQ消息队列>,关于Quartz定时任务请参考<Quartz的基本使用之入门(2.3.0版本)> spring boot实现定时任务,除了集成Quartz外,还可以直接使用scheduler注解.使用1个简单的注解就可以完成,为什么还要较为复杂的集成Quartz呢?这里我简单回答下这2中方式的区别,这也是我在项目中为什么要选择Quartz这种方式. 1.scheduler注解方式,一旦定时任务产生异常,那么此定时任务就

Spring Boot 入门(十一):集成 WebSocket, 实时显示系统日志

以前面的博客为基础,最近一篇为Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存.本篇博客主要介绍了Spring Boot集成 Web Socket进行日志的推送,并实时显示在页面上. 1.导入jar包 第一个jar包是websocket的,第二个jar包是关于环形队列的jar包,本案例是通过本地队列存储日志.有条件的话,最好通过中间件存储(eg:redis,mq……).通过本地队列存储日志会存在日志丢失的情况,且日志量太大,会把页面卡死. 1 <!--beg

161103、Spring Boot 入门

Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率.为Spring生态系统提供了一种固定的.约定优于配置风格的框架. Spring Boot具有如下特性: 为基于Spring的开发提供更快的入门体验 开箱即用,没有代码生成,也无需XML配置.同时也可以修改默认值来满足特定的需求. 提