美文网首页
SpringBoot整合Swagger2

SpringBoot整合Swagger2

作者: Pts | 来源:发表于2021-12-07 09:34 被阅读0次

    1. Swagger依赖

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    

    SpringBoot 整合Swagger2 踩坑记录

    Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

    报错的原因是由于SpringBoot的版本跟Swagger的版本有冲突。
    SpringBoot用的2.6.1的版本,Swagger用的2.9.2的版本;最后降低了SpringBoot的版本为2.5.6解决了问题。

    2. Swagger配置文件

    package com.skyi.security.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @Classname SwaggerConfig Swagger2配置类
     * @Description TODO
     * @Version 1.0.0
     * @Date 2021/12/7 9:03
     * @Created by pts
     */
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    //是否开启 (true 开启  false隐藏。生产环境建议隐藏)
                    //.enable(false)
                    .select()
                    //扫描的路径包,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
                    .apis(RequestHandlerSelectors.basePackage("com.skyi.security.controller"))
                    //指定路径处理PathSelectors.any()代表所有的路径
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    //设置文档标题(API名称)
                    .title("SpringBoot中使用Swagger2接口规范")
                    //文档描述
                    .description("接口说明")
                    //服务条款URL
                    .termsOfServiceUrl("http://localhost:8086/")
                    //版本号
                    .version("1.0.0")
                    .build();
        }
    }
    

    3. 测试控制器

    package com.skyi.security.controller;
    
    
    import com.skyi.security.common.Result;
    import com.skyi.security.entity.User;
    import com.skyi.security.service.UserService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    /**
     * <p>
     *  前端控制器
     * </p>
     *
     * @author pts
     * @since 2021-12-06
     */
    @RestController
    @RequestMapping("/user/")
    @CrossOrigin
    @Api(value = "测试接口", tags = "用户管理相关的接口", description = "用户测试接口")
    public class UserController {
        @Autowired
        private UserService userService;
    
        @PostMapping("register")
        //方法参数说明,name参数名;value参数说明,备注;dataType参数类型;required 是否必传;defaultValue 默认值
        @ApiImplicitParam(name = "user", value = "新增用户数据",dataType = "User",required = true)
        //说明是什么方法(可以理解为方法注释)
        @ApiOperation(value = "添加用户", notes = "添加用户")
        public Result register(@RequestBody User user){
            List<User> list = userService.lambdaQuery().eq(User::getUsername, user.getUsername()).list();
            if (list.size()>0){
                return Result.failed("用户已存在!");
            }
            boolean flag = userService.save(user);
            if (flag)
                return Result.succeed("注册成功!");
            else
                return Result.failed("注册失败!");
        }
    }
    

    4. Swagger页面访问

    image.png

    5. Swagger注解详解

    Springboot优雅集成Swagger2 - 云+社区 - 腾讯云 (tencent.com)

    相关文章

      网友评论

          本文标题:SpringBoot整合Swagger2

          本文链接:https://www.haomeiwen.com/subject/ccpoxrtx.html