Springboot 集成swagger,配置Swagger 扫描接口

916 阅读2分钟

这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战

什么是swagger? 自己号称为世界上最流行的Api框架 ReatFul Api 文档在线生成工具=》 Api 文档与Api 定义同步更新 直接运行,可以在线测试Api 接口 支持多种语言 官网 swagger.io/ 在这里插入图片描述

如何在项目中使用 Swagger 导入依赖sa

     <!--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>

先键一个Spring boot 的项目 在这里插入图片描述 简单的hello 程序

package com.jj.demo.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello,swagger!";
    }
}

配置Swagger 的配置文件 在这里插入图片描述 先简单的配置一下就可以访问到 swagger 的页面了

package com.jj.demo.config;

import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
//加入Swagger 的注解  ,开启
@EnableSwagger2
public class Swaggerconfig {
}

**访问http://localhost:8080/swagger-ui.html**![在这里插入图片描述](p3-juejin.byteimg.com/tos-cn-i-k3…) 如何修改成自己的名字

package com.jj.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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;

import java.util.ArrayList;

@Configuration
//加入Swagger 的注解  ,开启
@EnableSwagger2
public class Swaggerconfig {
//    配置Swagger 的 Docket 的bean 实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }
//    配置Swagger 信息
    private ApiInfo apiInfo(){
//        作者信息
        Contact contact = new Contact("娇娇", "", "1782579163@qq.com");
        return new ApiInfo(
                "娇娇的Api 文档","生而为人,务必善良","1.0","",contact,"","",new ArrayList<>()
        );
    }
}

效果 在这里插入图片描述 **配饰Swagger 扫描 **

//    配置Swagger 的 Docket 的bean 实例
    @Bean
    public Docket docket(){


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
//        RequestHandlerSelectors 配置要扫描接口的方式
//                basePackage :指定要扫描的包
//                any() :扫描全部
//                none():不扫描
//                withClassAnnotation //扫描类上的注解,参数市一个注解的反射对象
//                withMethodAnnotation // 扫描方法上的注解
//                。paths()过滤什么路径
                .apis(RequestHandlerSelectors.basePackage("com.jj.demo.Controller"))
                .build()
                ;
    }

关闭开关 在这里插入图片描述 在这里插入图片描述 就会看到这个可爱的表情包!! 问题,如何只希望自己的Swagger 在生成环境中使用,在发布的时候不使用? 判断是不是生产环境 flag=false 注入enable (flag) 第一步 在这里插入图片描述在config 类里把需要的配置文件,发过来,先放参数。 在这里插入图片描述 然后调用方法,把测试的环境放到里面 在这里插入图片描述 在开启swagger 里把获取到的布尔值放到里面,因为他正好也需要的是一个布尔类型的。 在这里插入图片描述 效果 此刻我们开启的环境是dev 配置文件

spring.profiles.active=dev

启动项目 看到此刻的flag 是true 在这里插入图片描述 在这里插入图片描述 如何配置分组,以及配置多个分组 在这里插入图片描述 效果 在这里插入图片描述 如何配置多个分组, 在这里插入图片描述

几个常用的注解 实体类是public 我写错了!!!!!!!!!!11 在这里插入图片描述 在这里插入图片描述 效果 在这里插入图片描述 **ApiOperation 注释和ApiParam 注释 **

//    ApiOperation 接口,不是放在类上的,是方法上
    @ApiOperation("hello 的第二个控制类")
    @RequestMapping("/hello2")
//    参数的文档注释
    public String hello2(@ApiParam("用户名") String name){
        return "hello"+name;
    }

效果 在这里插入图片描述