Spring Boot启动报错:不支持同名Swagger Docket分组
解决Swagger报错:Multiple Dockets with the same group name are not supported
这个错误的根源很明确:Swagger的Docket组件默认使用default作为组名,而你的项目里现在有多个Docket实例共用了这个默认组名,导致冲突。
看你的代码,问题出在两处配置的叠加:
SpringFoxConfig类里显式创建了一个Docket(默认组名default)CoreApp类上也标注了@EnableSwagger2,这会让Swagger的自动配置逻辑可能额外生成一个默认的Docket,或者因为重复启用Swagger导致上下文里出现重复的Docket实例
给你两个简单的解决办法,选一个就行:
办法一:给自定义Docket指定唯一组名
修改SpringFoxConfig里的apiDocket()方法,给你的Docket设置一个独特的组名,比如test-api-group:
@Bean public Docket apiDocket() { return new Docket(DocumentationType.SWAGGER_2) .groupName("test-api-group") // 添加这行,设置唯一组名 .select() .apis(RequestHandlerSelectors.basePackage("test.rest")) .paths(PathSelectors.ant("/test/**")) .build() .apiInfo(apiInfo()); }
这样你的自定义Docket就有了专属组名,不会和默认的Docket(如果存在)冲突。
办法二:移除重复的@EnableSwagger2注解
Swagger只需要在一个配置类上启用就行,你现在在两个类上都加了@EnableSwagger2,完全没必要。把CoreApp上的这个注解删掉:
@OurApp public class CoreApp extends OurApp { }
只保留SpringFoxConfig上的@EnableSwagger2,这样就不会触发重复的Docket注册逻辑。
修改完之后重启服务,这个组名冲突的错误应该就消失了。如果还是有问题,可以排查下项目里有没有其他地方也定义了Docket实例,确保每个Docket的groupName都是唯一的。
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

