haoxiaolan 2024-05-26 18:21 采纳率: 34.7%
浏览 38

WebMvcConfigurationSupport导致knife4j不能访问

WebMvcConfigurationSupport配置导致knif4j接口文档不能正常访问

    <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>


@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Resource
    private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;

    /**
     * 注册自定义拦截器
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //配置拦截器访问静态资源
        registry.addResourceHandler("/doc.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/favicon.ico")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");

        registry.addResourceHandler("/v3/**")
                .addResourceLocations("classpath:/META-INF/resources/v3/");
    }
}

如何修改静态资源配置可以正常访问?

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-26 18:21
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在使用Spring Boot项目中集成knife4j时,如果遇到无法访问knife4j生成的接口文档的问题,通常需要检查几个方面:

    1. 确保依赖版本兼容:首先,确保你使用的knife4j版本与Spring Boot版本兼容。

    2. 检查WebMvcConfigurationSupport配置:你的配置类WebMvcConfiguration扩展了WebMvcConfigurationSupport,这通常用于添加自定义的资源处理器。如果knife4j的资源路径与你的配置冲突,可能会导致访问问题。

    3. 资源路径配置:根据你的配置,你已经为doc.htmlfavicon.icowebjars/**v3/**指定了资源路径。确保这些路径与knife4j生成的资源路径一致。

    4. 检查拦截器配置:你的配置类中使用了JwtTokenAdminInterceptor拦截器。如果这个拦截器影响了对knife4j资源的访问,可能需要调整拦截器的配置。

    5. 检查端口和上下文路径:确保你的应用运行在正确的端口上,并且上下文路径设置正确。

    6. 查看日志:查看Spring Boot的启动日志,看是否有关于资源加载失败的错误信息。

    解决方案

    如果knife4j的资源路径与你的配置冲突,你可以尝试以下解决方案:

    • 调整资源路径:确保knife4j的资源路径与你在addResourceHandler中指定的路径一致。如果不一致,你需要调整它们以匹配。

    • 排除knife4j资源路径:如果JwtTokenAdminInterceptor拦截器影响了knife4j资源的访问,你可能需要在拦截器的配置中排除knife4j的资源路径。

    • 使用不同的资源处理器:如果WebMvcConfigurationSupportaddResourceHandler方法与knife4j的资源加载有冲突,你可以考虑使用WebMvcConfigurer接口来配置资源处理器,而不是扩展WebMvcConfigurationSupport

    示例代码

    以下是一个使用WebMvcConfigurer接口来配置资源处理器的示例:

    @Configuration
    @Slf4j
    public class WebMvcConfiguration implements WebMvcConfigurer {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/doc.html")
                    .addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/favicon.ico")
                    .addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/");
            registry.addResourceHandler("/v3/**")
                    .addResourceLocations("classpath:/META-INF/resources/v3/");
        }
    }
    

    参考资料

    请注意,这些解决方案和示例代码需要根据你的具体项目情况进行调整。如果问题仍然存在,建议查看knife4j的GitHub仓库中的issues部分,看看是否有其他开发者遇到了类似的问题,并找到了解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月26日

悬赏问题

  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器