swagger 父子工程 Cannot convert undefined or null to object(或者swagger打不开)
根本原因:启动类无法扫描到配置文件和controller
解决:
排除:
- 是否添加了扫描controller的包
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
// .enable(swaggerProperties.getEnabled())
// .host(swaggerProperties.getHost())
.apiInfo(apiInfo())//调用apiInfo方法,创建一个ApiInfo实例,里面是展示在文档页面信息内容
.select()
//控制暴露出去的路径下的实例
//如果某个接口不想暴露,可以使用以下注解
//@ApiIgnore 这样,该接口就不会暴露在 swagger2 的页面下
.apis(RequestHandlerSelectors.basePackage("top.lvxiaoyi.blogsystem.controller"))
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
//构建 api文档的详细信息函数
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("api测试")
.version("1.0")
//描述
.description("吕小医测试")
.build();
}
- 排查启动类中是否添加了扫描机制
@springbootApplication中默认添加了@ComponentScan,如果你后来又进行了这样的的配置,默认覆盖上面,仅进行你的扫描,这样你的扫描如果写的太死造成有些没有包扫描到,就会造成swagger打不开或者没有controller信息
我的就是遇到这样的问题
@ComponentScan默认是扫描当前包以及子包,如果你没有配置则扫描所有启动类包下面的子包,即时不在同一个子工程中只要包名一样也会扫描到