在添加了第二个配置和 @EnableWebMvc 后,Swagger 方法会列出两次。

16 浏览
0 Comments

在添加了第二个配置和 @EnableWebMvc 后,Swagger 方法会列出两次。

我有一个带有两个@Configuration类的RESTful Spring应用程序,我的swagger方法列出了两次。\n我有一个swagger配置\n

@Configuration
@EnableSwagger // 加载框架所需的spring beans
public class SwaggerConfig {
    private SpringSwaggerConfig springSwaggerConfig;
    
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
        this.springSwaggerConfig = springSwaggerConfig;
    }
    
    @Bean
    public SwaggerSpringMvcPlugin customImplementation() {
        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
            .apiInfo(apiInfo())
            .includePatterns(".*myPattern.*")
            .useDefaultResponseMessages(false)
            .apiVersion("1.1.0");
    }
    
    private ApiInfo apiInfo() {
        ApiInfo apiInfo = new ApiInfo("my Service REST API",
                null, null, null, null, null);
        return apiInfo;
    }
}

\n为了解决这个问题:Get Request fails for .com email addresses because Spring interpretes it as a extensions,我有第二个配置:\n

@Configuration
@EnableWebMvc
public class RestCommonsMvcConfig extends WebMvcConfigurerAdapter {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }
}

\n但现在我的所有swagger方法都列出了两次。如果我删除@EnableWebMvc注释,它们将再次只列出一次,但该配置不再按预期工作(修复上述错误)。\n现在我该怎么办?\n


\n编辑\n我尝试直接从WebMvcConfigurationSupport扩展,但问题并未消失。\n

@Configuration
public class MyConfiguration extends WebMvcConfigurationSupport {
    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.favorPathExtension(false);
    }
}

0