通常遇到这个异常信息,都是由于在SpringBoot项目中,分不同的模块开发。
注解配置 @EnableSwagger2WebMvc
不在启动类上,而是加到了其他模块的注解中导致的。
我的是common一个单独的模块,在common模块中配置了WebMvcConfig。
然后在WebMvcConfig类上面加了注解@EnableSwagger2WebMvc
.
那么,解决方法也很简单,在启动类上也添加上注解@EnableSwagger2WebMvc
即可。
/**
* @Author: KingWang
* @Date: 2023/4/9
* @Desc:
**/
@Slf4j
@Configuration
//@EnableSwagger2WebMvc 分模块下,这个注解不在启动类模块中,是无效的
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//swagger文档需要添加下面2行
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
/**
* 扩展mvc框架的消息转换器
* @param converters
*/
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
log.info("扩展消息转换器...");
//创建消息转换器对象
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
//设置对象转换器,底层使用Jackson将java对象转为Json
messageConverter.setObjectMapper(new JacksonObjectMapper());
//将上面的消息转换器对象追加到mvc框架的转换器容器中
converters.add(0, messageConverter);
}
@Bean
public Docket adminApiConfig(){
List<Parameter> pars = new ArrayList<>();
ParameterBuilder tokenPar = new ParameterBuilder();
tokenPar.name("token")
.description("用户token")
.defaultValue("")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build();
pars.add(tokenPar.build());
//添加head参数end
Docket adminApi = new Docket(DocumentationType.SWAGGER_2)
.groupName("adminApi")
.apiInfo(adminApiInfo())
.select()
//只显示admin路径下的页面
.apis(RequestHandlerSelectors.basePackage("com.guigutool.system.controller"))
.paths(PathSelectors.regex("/admin/.*"))
.build()
.globalOperationParameters(pars);
return adminApi;
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("后台管理系统-API文档")
.description("本文档描述了后台管理系统微服务接口定义")
.version("1.0")
.contact(new Contact("guigutool", "http://guigutool.com", "[email protected]"))
.build();
}
}
启动类中加上该注解:
@EnableSwagger2WebMvc
@SpringBootApplication
@MapperScan("com.guigutool.system.mapper")
public class ServiceAuthApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceAuthApplication.class,args);
}
}
标签:Knife4j,请求,模块,文档,guigutool,转换器,new,EnableSwagger2WebMvc,注解
From: https://www.cnblogs.com/30go/p/17343541.html