环境搭建–源码在文章结尾
转载自:紫檀添香
转载链接:https://blog.csdn.net/HQJ520/article/details/104608337/
- 创建SpringBoot项目
2.选择快捷方式创建springboot项目
3.给项目命名
4.选择依赖模块
5.pom.xml中导入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>
6.配置Swagger信息
- 配置类添加一个方法来设置配置信息
- 配置端口和访问地址:http://localhost:8082/swagger-ui.html
- 访问结果
7.配置controller包扫描
- controller添加如下方法
- 测试效果
9.配置分组–配置类中添加如下配置
10.多环境设置是否启用Swagger
11.配置API注释 - 实体类注释
-.给控制层加注释
12.具体代码
User类
package com.example.swagger2.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @author yd
* @version 1.0
* @date 2020/3/2 0002 黄啟军
*/
@ApiModel("给API加注释")
public class User {
//字段注释
@ApiModelProperty("用户名")
private String name;
@ApiModelProperty("用户年龄")
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
-controller控制层
@RestController
public class Hello {
@ResponseBody
@GetMapping("/hello")
public String hello(){
return "测试成功";
}
/**只要我们的接口中,返回值存在实体类,他就会被扫描到Swagger中*/
@PostMapping("/user")
public User test(String username){
return new User();
}
@ApiOperation("登录控制方法")
@PostMapping("/hello2")
public String hello2(@ApiParam("用户名") String username){
return "hello"+username;
}
}
-配置类SwaggerConfig
package com.example.swagger2.controller.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
/**
* @author yd
* @version 1.0
* @date 2020/3/1 0001 黄啟军
*/
@Configuration
@EnableSwagger2 //开启wagger2
public class SwaggerConfig {
/**设置多个分组*/
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
/**配置了swagger的Docket的bean实例*/
@Bean
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev", "test");
//获取项目的环境,判断是否处在自己设定的环境当中,如果有上述环境就返回true
boolean profiles1 = environment.acceptsProfiles(profiles);
System.out.println(profiles1);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组
.groupName("黄")
//是否启用Swagger,false是不启用,默认是true
.enable(profiles1)
.select()
//RequestHandlerSelectors:配置要扫描接口的方式
//basePackage:指定要扫描的包
//any:表示扫描全部
//none:都不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.example.swagger2.controller"))
//paths():过滤扫描路径--表示只扫描如下路径的内容
//.paths(PathSelectors.ant("com.example.swagger2/**"))
.build();
}
/**配置Swagger信息:apiInfo*/
private ApiInfo apiInfo(){
//作者信息
Contact contact = new Contact("黄", "", "2695818931@qq.com");
return new ApiInfo(
"Swagger练习",//标题
"常用操作的练习",//描述
"1.0",//版本
"urn:tos",
contact,//联系人
"Apache 2.0",//许可
"http://www.apache.org/licenses/LICENSE-2.0",//许可地址
new ArrayList<VendorExtension>());
}
}