首先导入依赖
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
然后配置swagger
@Configuration
public class SwaggerConfiguration {
/**
* 创建Docket类型的对象。并使用sping容器管理。
* Docket是Swagger中的全局配置对象
* @return
*/
@Bean
public Docket docket(){
Docket docket = new Docket(DocumentationType.SWAGGER_2);
//API帮助文档的描述信息。Information
ApiInfo apiInfo = new ApiInfoBuilder().contact(//配置swagger文档主体内容
new Contact(
"lingxiSwagger开发文档", // 是文档的发布者名称
"http://www.bomber.ltd", // 是文档发布者的网站地址
"412642208@qq.com" // 文档发布者的电子邮箱
))
.title("Swagger框架学习帮助文档")
.description("Swagger框架学习帮助文档详细描述-Swagger框架是一个用于开发RestAPI帮助文档的框架")
.version("1.1")
.build();
// 给docket上下文配置api描述信息
docket.apiInfo(apiInfo);
docket
.select() // 获取Docket中的选择器,返回ApiSelectorBuilder。构建选择器的。如:扫描什么包的注解
.apis(
Predicates.not(//取反。false -> true true -> false
RequestHandlerSelectors.withClassAnnotation( // 当方法上有注解的时候返回true
MyAnnotationSwagger.class) // 方法上有什么注解的时候返回true
)
)
.apis(RequestHandlerSelectors.basePackage("com.lingxi.swagger.controller")) // 设定扫描哪个包(包含子包)的注解
.paths(
Predicates.or(
PathSelectors.regex("/swagger/.*"), // 使用正则表达式,约束生成AIP文档的路径地址
PathSelectors.regex("/.*")
)
)
.build(); // 重新构建Docket对象
return docket;
}
}
springboot启动类
/**
* EnableSwagger2 是springfox提供的一个注解,代表swagger2相关技术开启。
* 会扫描当前类所在包,及子包中所有的类型中的注解。做swagger文档的定值
*/
@SpringBootApplication
@EnableSwagger2
public class SwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SwaggerApplication.class, args);
}
}
控制层
/**
* @Api - 描述当前类型生成帮助文档的信息
* 属性 -
* - tags : 给当前类型定义别名,可以有多个。定义几个比欸的那个,在ui视图就显示几个控制器访问菜单
* - description : 给当前类型生成的帮助文档定义一个描述信息
*/
@RestController
@RequestMapping(value = "/swagger")
@Api(tags = "MyController",description = "描述")
public class SwaggerController {
@RequestMapping("/testEntity")
public MyEntity testEntity(){
return new MyEntity();
}
@GetMapping("/test")
// @ApiImplicitParam(name = "m" , value = "m参数描述", required = false, paramType = "字符串" , dataType = "名值对")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "m" , value = "m参数描述", required = false, paramType = "字符串" , dataType = "名值对"),
@ApiImplicitParam(name = "n" , value = "n参数描述", required = false, paramType = "字符串" , dataType = "名值对")
})
public String test(String m , String n){
return "test";
}
// - 忽略,当前注解描述的方法或类型,不生成api帮助文档
@ApiIgnore
@MyAnnotationSwagger
@RequestMapping("/user")
public String user(){
return "zhangsan";
}
@PostMapping("/userPost")
@ApiOperation(value = "post方法,执行数据新增操作",notes = "Swagger学习使用-处理POST请求的方法")
public String userPost(
@ApiParam(name = "用户名(user)" , value = "新增用户是提供的用户名" , required = true) String user){
return "post" + user;
}
}
实例类
@ApiModel(value = "自定义实体-MyEntity" , description = "MyEntity存储用户数据")
@Data
public class MyEntity implements Serializable {
@ApiModelProperty(value = "主键" , name = "主键(id)",required = false , example = "1" , hidden = false)
private Integer id;
@ApiModelProperty(value = "姓名" , name = "姓名(name)",required = false , example = "张三" , hidden = false)
private String name;
@ApiModelProperty(value = "密码" , name = "密码(password)",required = false , example = "123456" , hidden = false)
private String password;
}