SpringBoot整合Swagger2-knife4j

1.创建spring boot项目

1.1 创建项目默认都会

spring boot 版本:2.6.4
swagger 版本:2.0.7

1.2 在pom中添加依赖

<!-- 引入swagger -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.7</version>
        </dependency>

1.3 参考官网swagger

1.4 创建Swagger配置类

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {

    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        //.title("swagger-bootstrap-ui-demo RESTful APIs")
                        .description("# swagger-bootstrap-ui-demo RESTful APIs")
                        .termsOfServiceUrl("http://www.xx.com/")
                        .contact("xx@qq.com")
                        .version("1.0")
                        .build())
                //分组名称
                .groupName("2.X版本")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

官网并没有指明要指定静态文件地址 直接访问可能会报404错误

1.5 可以在启动类指定文件地址

@SpringBootApplication
public class DemoApplication  implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 解决swagger无法访问
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        // 解决swagger的js文件无法访问
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

1.6 控制层添加注解

@Api(tags = "用户增删改查")
@RestController
@RequestMapping("userController")
public class UserController {
    /**
     * 使用线程安全的map存储user
     */
    static Map<Long, User> userMap= Collections.synchronizedMap(new HashMap<Long, User>());

    /**
     * 获取用户列表
     * @return
     */
    @ApiOperation(value = "用户列表")
    @GetMapping("/getUser")
    public List<User> getUserList(){
        return new ArrayList<>(userMap.values());
    }
    /**
     * 用户添加
     * @return
     */
    @ApiImplicitParam(dataTypeClass=User.class,required = true)
    @ApiOperation(value = "用户添加")
    @PostMapping("/addUser")
    public Object addUser(@RequestBody User user){
        userMap.put(user.getUserId().longValue(),user);
        return "用户添加成功";
    }
    /**
     * 用户修改
     * @return
     */
    @ApiOperation(value = "用户修改")
    @PutMapping("/updateUser")
    public Object updateUser(@RequestBody User user){
        User entity = userMap.get(user.getUserId().longValue());
        entity.setAge(user.getAge());
        entity.setUserName(user.getUserName());
        userMap.put(user.getUserId().longValue(),entity);
        return "更新成功";
    }
    /**
     * 删除用户
     * @return
     */
    @ApiOperation(value = "删除用户")
    @DeleteMapping("/deleteUser")
    public Object deleteUser(Long userId){
        userMap.remove(userId);
        return "删除成功";
    }
}
// 实体类
@Data
public class User {
    /**
     * 用户id
     */
    private Integer userId;
    /**
     *用户姓名
     */
    private String userName;
    /**
     * 用户年龄
     */
    private Integer age;
}

1.7 配置文件中设置服务端口 启动服务

server:
	port: 8081

1.8访问 http://localhost:8081/doc.html

1.9结果

描述

1.10 如果启动报

// 如果启动报这个错误 
Failed to start bean ‘documentationPluginsBootstrapper‘

那么在配置文件中添加

# 配置路径匹配策略
spring:
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER

1.11再次启动 大功告成

OK

启动报错原因可访问:处理documentationPluginsBootstrapper报错

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值