解决springBoot整合knife4j报错的问题()

依赖:

<!--引入knife4j依赖--><dependency>    <groupId>com.github.xiaoymin</groupId>    <artifactId>knife4j-spring-boot-starter</artifactId>    <version>3.0.3</version></dependency>knife4j配置文件:
package com.example.family.Configuration;import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;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.service.Contact;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2//Swagger3版本使用这个注解public class Knife4jConfiguration {    /*引入Knife4j提供的扩展类*/    private final OpenApiExtensionResolver openApiExtensionResolver;    @Autowired    public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {        this.openApiExtensionResolver = openApiExtensionResolver;    }    @Bean(value = "defaultApi2")    public Docket userApi() {        String groupName =  "用户管理API";        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .groupName(groupName)                .select()                //在设置的包下的会生效              .apis(RequestHandlerSelectors.basePackage("com.example.family.Controller.UserController"))                //只有标注了ApiOperation的方法才会生效//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                //赋予插件体系                .extensions(openApiExtensionResolver.buildExtensions(groupName));    }    @Bean(value = "defaultApi3")    public Docket testApi() {        String groupName =  "测试API";        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .groupName(groupName)                .select()                //在设置的包下的会生效                .apis(RequestHandlerSelectors.basePackage("com.example.family.Controller.Test"))                //只有标注了ApiOperation的方法才会生效//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                //赋予插件体系                .extensions(openApiExtensionResolver.buildExtensions(groupName));    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("family后台服务API")                .description("整合knife4j搭建的后台服务API接口文档")                .contact(new Contact("减肥", null, "1442884413@qq.com"))                .termsOfServiceUrl("http://localhost:8080/")                .version("1.0.0")                .build();    }}
controller层:
package com.example.family.Controller.UserController;import cn.hutool.core.bean.BeanUtil;import cn.hutool.core.bean.copier.CopyOptions;import com.example.family.DAO.UserDAO;import com.example.family.DTO.UserQueryDTo;import com.example.family.Pojo.User;import com.example.family.ResponseDTO.Result;import com.example.family.ResponseDTO.ResultEntry;import com.example.family.ResponseDTO.ResultEnum;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Example;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController@Api(tags = "用户管理")@RequestMapping("user")public class UserController {    @Autowired    UserDAO userDAO;    @ApiOperation("查询用户")    @GetMapping("search")    public Result<List<User>> test1(UserQueryDTo dto){        User user = new User();        BeanUtil.copyProperties(dto,user, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));        Example<User> example = Example.of(user);        return ResultEntry.error(userDAO.findAll(example), ResultEnum.RESULT_NOT_EXIST);    }}

报错信息:Unable to scan documentation context default  java.lang.NullPointerException: null

出错原因:将类中的属性设置为了public类型

解决办法:将public删除或者改为private就可以啦

————————

依赖:

<!--引入knife4j依赖--><dependency>    <groupId>com.github.xiaoymin</groupId>    <artifactId>knife4j-spring-boot-starter</artifactId>    <version>3.0.3</version></dependency>knife4j配置文件:
package com.example.family.Configuration;import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;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.service.Contact;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2//Swagger3版本使用这个注解public class Knife4jConfiguration {    /*引入Knife4j提供的扩展类*/    private final OpenApiExtensionResolver openApiExtensionResolver;    @Autowired    public Knife4jConfiguration(OpenApiExtensionResolver openApiExtensionResolver) {        this.openApiExtensionResolver = openApiExtensionResolver;    }    @Bean(value = "defaultApi2")    public Docket userApi() {        String groupName =  "用户管理API";        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .groupName(groupName)                .select()                //在设置的包下的会生效              .apis(RequestHandlerSelectors.basePackage("com.example.family.Controller.UserController"))                //只有标注了ApiOperation的方法才会生效//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                //赋予插件体系                .extensions(openApiExtensionResolver.buildExtensions(groupName));    }    @Bean(value = "defaultApi3")    public Docket testApi() {        String groupName =  "测试API";        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .groupName(groupName)                .select()                //在设置的包下的会生效                .apis(RequestHandlerSelectors.basePackage("com.example.family.Controller.Test"))                //只有标注了ApiOperation的方法才会生效//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))                .paths(PathSelectors.any())                .build()                //赋予插件体系                .extensions(openApiExtensionResolver.buildExtensions(groupName));    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("family后台服务API")                .description("整合knife4j搭建的后台服务API接口文档")                .contact(new Contact("减肥", null, "1442884413@qq.com"))                .termsOfServiceUrl("http://localhost:8080/")                .version("1.0.0")                .build();    }}
controller层:
package com.example.family.Controller.UserController;import cn.hutool.core.bean.BeanUtil;import cn.hutool.core.bean.copier.CopyOptions;import com.example.family.DAO.UserDAO;import com.example.family.DTO.UserQueryDTo;import com.example.family.Pojo.User;import com.example.family.ResponseDTO.Result;import com.example.family.ResponseDTO.ResultEntry;import com.example.family.ResponseDTO.ResultEnum;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Example;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController@Api(tags = "用户管理")@RequestMapping("user")public class UserController {    @Autowired    UserDAO userDAO;    @ApiOperation("查询用户")    @GetMapping("search")    public Result<List<User>> test1(UserQueryDTo dto){        User user = new User();        BeanUtil.copyProperties(dto,user, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));        Example<User> example = Example.of(user);        return ResultEntry.error(userDAO.findAll(example), ResultEnum.RESULT_NOT_EXIST);    }}

报错信息:Unable to scan documentation context default  java.lang.NullPointerException: null

出错原因:将类中的属性设置为了public类型

解决办法:将public删除或者改为private就可以啦