1.认为你知道Maven 和 Idea 和 SpringBoot 等知识
a.pom方式引入jar
<!--swagger star-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!--json-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!--end-->
b.创建一个config目录来配置swagger
package com.xinpi.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @autohr 任浩,
* @create 2019-04-15-19:46
*/
@Configuration
@EnableSwagger2
@ComponentScan("com.xinpi.controller")
public class SwaggerConfig {
//swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.xinpi.controller"))
.paths(PathSelectors.any())
.build();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("Spring Boot 测试使用 Swagger2 构建RESTful API")
//创建人
.contact(new Contact("MarryFeng", "http://www.baidu.com", ""))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}
另外一个web配置:
package com.xinpi.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @autohr 任浩,
* @create 2019-04-15-19:56
*/
@Configuration
public class webMVCConfig implements WebMvcConfigurer {
public void addResouceHanlers(ResourceHandlerRegistry registry) {
/*swagger的首页的渲染*/
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
/*映入swagger前端页面需要的Jquery等类型的jar*/
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
启动类加上:
@EnableWebMvc
如:
package com.xinpi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
@EnableWebMvc
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
}
}
具体的Controller 类
package com.xinpi.controller; import com.xinpi.entity.UserBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; import java.util.Queue; /** * @autohr 任浩, * @create 2019-04-15-19:49 */ //@API 该注解用来 描述这个类 @Api(value = "用户模块", description = "用户模块") @RestController public class BookController { @ApiOperation(value = "说'你好'的功能", notes = "说你好") //这个方法是干嘛的 @GetMapping("/list") public Map SayHello() { HashMap<String, Object> results = new HashMap<>(); results.put("name", "张三说了"); results.put("val", "hello"); return results; } @ApiOperation(value = "获得单个用户", notes = "根据Id查询") //notes 描述这个方法的功能 @ApiImplicitParam(value = "用户的Id",paramType = "query") //对入参的描述 @GetMapping("list/id/{id}") public UserBean showOne(@PathVariable Integer id) { UserBean userBean = new UserBean(); userBean.setEmail("1111.@qq.com"); return userBean; } }
代码地址: