You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Swagger文档免认证访问及YAML文件404问题排查

问题解决方法

核心原因

你在SecurityConfig中添加了@EnableWebMvc注解,这个注解会禁用Spring Boot默认的WebMvc自动配置,其中就包含静态资源的映射规则,导致src/main/resources/static下的Swagger YAML文件无法被正确访问——即使Spring Security已经放开了对应路径的权限。

解决方案

方案1:移除@EnableWebMvc注解(推荐)

直接删除SecurityConfig类上的@EnableWebMvc注解,Spring Boot会自动启用默认的WebMvc配置,静态资源会自动映射到根路径,此时/swagger-apis/api1/swagger.yaml就能正常访问。

修改后的SecurityConfig类头部:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig {
    // 其余代码保持不变
}

方案2:手动配置静态资源映射(若必须保留@EnableWebMvc)

如果业务必须使用@EnableWebMvc,需要在实现WebMvcConfigurer的类中手动添加静态资源映射规则。修改YamlSwaggerConfig类,重写addResourceHandlers方法:

@Configuration
@EnableSwagger2
public class YamlSwaggerConfig implements WebMvcConfigurer {

    // 原有代码保持不变

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 映射swagger-apis路径到static下的对应目录
        registry.addResourceHandler("/swagger-apis/**")
                .addResourceLocations("classpath:/static/swagger-apis/");
        // 补充swagger-ui相关的静态资源映射
        registry.addResourceHandler("/swagger-ui.html/**")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

额外检查项

  • 确认src/main/resources/static/swagger-apis/api1/swagger.yaml文件路径和名称完全正确,注意大小写(Linux/macOS环境区分大小写)。
  • 重启Spring Boot应用,确保配置修改生效。

内容的提问来源于stack exchange,提问作者Ravi Dobariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:25:31