IDEA+SpringBoot整合Swagger详解

环境搭建–源码在文章结尾

  • 创建SpringBoot项目
    IDEA+SpringBoot整合Swagger详解_第1张图片
    2.选择快捷方式创建springboot项目IDEA+SpringBoot整合Swagger详解_第2张图片
    3.给项目命名IDEA+SpringBoot整合Swagger详解_第3张图片
    4.选择依赖模块IDEA+SpringBoot整合Swagger详解_第4张图片
    5.pom.xml中导入Swagger依赖
      
            io.springfox
            springfox-swagger2
            2.9.2
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        

6.配置Swagger信息
IDEA+SpringBoot整合Swagger详解_第5张图片

  • 配置类添加一个方法来设置配置信息
    IDEA+SpringBoot整合Swagger详解_第6张图片
  • 配置端口和访问地址:http://localhost:8082/swagger-ui.html
    IDEA+SpringBoot整合Swagger详解_第7张图片
  • 访问结果
    IDEA+SpringBoot整合Swagger详解_第8张图片
    7.配置controller包扫描
    IDEA+SpringBoot整合Swagger详解_第9张图片
  • controller添加如下方法
    IDEA+SpringBoot整合Swagger详解_第10张图片
  • 测试效果
    IDEA+SpringBoot整合Swagger详解_第11张图片
    9.配置分组–配置类中添加如下配置
    IDEA+SpringBoot整合Swagger详解_第12张图片
    10.多环境设置是否启用Swagger
    IDEA+SpringBoot整合Swagger详解_第13张图片
    11.配置API注释
  • 实体类注释
    IDEA+SpringBoot整合Swagger详解_第14张图片
    -.给控制层加注释
    IDEA+SpringBoot整合Swagger详解_第15张图片
    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("黄", "", "[email protected]");
            return new ApiInfo(
                    "Swagger练习",//标题
                    "常用操作的练习",//描述
                    "1.0",//版本
                    "urn:tos",
                     contact,//联系人
                    "Apache 2.0",//许可
                    "http://www.apache.org/licenses/LICENSE-2.0",//许可地址
                    new ArrayList());
        }
}

你可能感兴趣的:(高级篇)