1.引入swagger的maven依赖
<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>注:springboot2.6.0版本及以上搭配swagger2.9.2依赖会出现空指针
解决:降低springboot版本为2.5.7
2.swagger在开发和测试环境切换
1.在application.properties中指定环境
spring.profiles.active=dev
2. 获取项目环境来判断swagger的开启
通过environment.acceptsProfiles判断是否处在自己设定的dev环境当中
//配置了 swagger 的docket的bean实例 @Bean public Docket docket(Environment environment){ //设置要显示的Swagger环境 Profiles profiles = Profiles.of("dev"); //获取项目的环境 通过environment.acceptsProfiles判断是否处在自己设定的环境当中 boolean flag = environment.acceptsProfiles(profiles); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("研发一组") .enable(flag) //是否开启swagger .select() //RequestHandlerSelectors,配置要扫描接口的方式 //basePackage:指定要扫描的包 //any():扫描全部 //none():全都不扫描 //withClassAnnotation():扫描类上的注解,参数是一个注解的反射对象 RestController.class //withMethodAnnotation():扫描方法上的注解 GetMapping.class .apis(RequestHandlerSelectors.basePackage("com.kuang.swgger.controller")) //paths() 过滤路径 // .paths(PathSelectors.ant("/kuang/**")) .build(); //build工厂设计模式 }
3.swagger的分组
在swagger的config文件中写多个Docket
4.swagger的注解及页面显示
1.实体类的注释
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}
页面效果
2.接口的注释
@RestController
public class HelloController {
@GetMapping("/demo")
public String Hello(){
return "hello";
}
//只要我们的接口中,返回值存在实体类,他就会被扫描到swagger中
@PostMapping("/user")
public User user(){
return new User();
}
//ApiOperation,不是放在类上的是放在方法上的
@ApiOperation("hello控制类")
@GetMapping("/demo2")
public String hello2(@ApiParam("用户名") String username){
return "hello"+username;
}
//ApiOperation,不是放在类上的是放在方法上的
@ApiOperation("Post测试")
@PostMapping("/postt")
public User postt(@ApiParam("用户名")User user){
return user;
}
}
2.页面效果