SpringBoot整合Swagger2

目录

一、依赖

二、config

三、实体类

四、controller


一、依赖

        
        
            io.springfox
            springfox-spring-web
            3.0.0
        
        
            io.springfox
            springfox-swagger2
            3.0.0
        
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        
        
        
            com.github.xiaoymin
            knife4j-spring-boot-starter
            3.0.3
        

二、config

package com.chensir.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
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;


/*
 * 官方:http://localhost:8080/swagger-ui.html
 * 漂亮的ui:http://localhost:8080/doc.html
 * */

@Configuration
@EnableSwagger2 // 重要!开启swagger2的自动配置
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()//选择哪些路径和API会生成document 

                //扫描所有有注解的api,用这种方式更灵活
                .apis(RequestHandlerSelectors
                                //.any() // 扫描全部的接口(没有添加注解也可以扫描出来),用这种方式更直接,默认
                                //.none() // 全部不扫描
                                .basePackage("com.chensir.system.controller") // 扫描指定包下的接口,最为常用
                        //.withMethodAnnotation(ApiOperation.class) // 扫描带有此注解的方法接口
                        //.withClassAnnotation(RestController.class) // 扫描带有指定注解类下的所有接口
                )

                .paths(PathSelectors
                                .any() // 满足条件的路径,该断言为true
                        //.none() // 不满足条件的路径,该断言为false(可用于生成环境屏蔽 swagger)
                        //.ant("/user/**") // 满足字符串表达式路径
                        //.regex("") // 符合正则的路径
                )
                .build();
    }

    /**
     * 这是匹配api的信息
     *
     * @return
     */
    private ApiInfo apiInfo() {
        Contact contact = new Contact(
                "chensir", // 作者
                "https://blog.csdn.net/weixin_45326523", // 网址
                "[email protected]" // 邮箱
        );
        return new ApiInfoBuilder()
                // 大标题
                .title("API接口文档")
                // 描述
                .description("生活一分钟,快乐60秒!")
                // 版本号
                .version("1.0.0")
                // 跳转链接
                .termsOfServiceUrl("https://blog.csdn.net/weixin_45326523")
                .license("swagger的使用教程")
                .licenseUrl("https://blog.csdn.net/weixin_45326523")
                .contact(contact)
                .build();
    }
}

三、实体类

package com.chensir.system.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.chensir.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * @author ChenSir
 * @Date 2023/9/8
 **/
@Data
@TableName("user")
@ApiModel(value = "user",description = "用户表实体")
public class User extends BaseEntity {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    private Integer id;

    @ApiModelProperty(value = "姓名")
    private String name;

    @ApiModelProperty(value = "年龄")
    private Integer age;

    @ApiModelProperty(value = "性别")
    private String sex;

    @ApiModelProperty(value = "排序")
    private String sort;

    /**
     * 删除标识
     *
     * @TableLogic 乐观锁
     */
    @TableLogic
    @ApiModelProperty(value = "逻辑删除字段")
    private String isDel;
}

四、controller

package com.chensir.system.controller;

import com.chensir.result.R;
import com.chensir.result.TableDataInfo;
import com.chensir.system.domain.bo.UserBo;
import com.chensir.system.domain.entity.User;
import com.chensir.system.domain.vo.UserVo;
import com.chensir.system.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * mysql用户信息
 * @author ChenSir
 * @Date 2023/9/8
 **/
@Slf4j
@Api(tags = "用户信息相关接口")
@RestController
@RequestMapping("/system/user")
public class UserController {

    @Resource
    private UserService userService;

    /**
     * 分页查询
     *
     * @param bo
     * @return
     */
    @ApiOperation(value = "分页查询用户", notes = "分页查询用户")
    @GetMapping("/selectPageUser")
    public TableDataInfo selectPageUser(UserBo bo) {
        return userService.selectPageUser(bo);
    }

    /**
     * 手动分页
     *
     * @param bo
     * @return
     */
    @ApiOperation(value = "手动分页查询用户", notes = "手动分页查询用户")
    @GetMapping("/selectPageUserByManual")
    public TableDataInfo selectPageUserByManual(UserBo bo) {
        return userService.selectPageUserByManual(bo);
    }

    /**
     * 新增
     *
     * @param user
     * @return
     */
    @ApiOperation(value = "用户新增", notes = "用户新增")
    @PostMapping("/add")
    public R add(@RequestBody User user) {
        Integer result = userService.add(user);
        return R.ok(result > 0 ? "添加成功" : "添加失败");
    }

    /**
     * 删除
     *
     * @param id
     * @return
     */
    @ApiOperation(value = "用户删除", notes = "用户删除")
    @DeleteMapping("/delete")
    public R remove(Integer id) {
        Integer result = userService.remove(id);
        return R.ok(result > 0 ? "删除成功" : "删除失败");
    }

}

你可能感兴趣的:(java,spring,boot,后端,java)