springboot整合swagger时静态资源映射冲突问题

本文介绍了在SpringBoot项目中遇到的Swagger静态资源与Thymeleaf样式冲突问题,通过配置多个静态资源路径解决了这个问题,包括对/META-INF/resources/webjars/路径的映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

最近没事做了一个类似于blog的Web项目,项目里用到了swagger,在开发过程中,发现springboot中的静态资源配置会和swagger的静态资源相冲突。


问题描述:

在引入了thymeleaf后发现页面的一些页面样式静态资源访问不到了,于是百度后发现需要对静态资源映射进行配置

#静态资源映射配置
spring.mvc.static-path-pattern=/static/**

配置后发现页面样式果然好了,但是在访问swagger调试接口时发现页面访问不到了
在这里插入图片描述
查看日志提示说是没有找到映射
在这里插入图片描述


原因分析:

配置了spring.mvc.static-path-pattern=/static/**只有静态资源的访问路径为/static/**时才会处理请求,且该配置只能配置一个路径,但swagger的页面及静态资源不在此路径下,所以在配置了该项后导致swagger会无法访问


解决方案:

去掉配置文件中spring.mvc.static-path-pattern=/static/**配置,定义配置文件来配置多个资源路径的映射,这里由于swagger的相关静态资源在/META-INF/resources/webjars/这个路径下,所以还需要增加映射"classpath:/META-INF/resources/webjars/"

@Configuration
public class WebConf extends WebMvcConfigurationSupport {
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            //映射static路径的请求到static目录下
            // 静态资源访问路径和存放路径配置
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
            // swagger访问配置
            registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/","classpath:/META-INF/resources/webjars/");
        }
    }

配置好后swagger就能正常访问了
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值