Spring Boot静态资源放行指南

在Spring Boot应用中,静态资源放行是个不可或缺的部分。这些资源包括展示在Web应用页面上的图片、CSS和JavaScript等文件。在本文中,我们将通过几个方面来讲述如何在Spring Boot应用中放行静态资源。

一、静态资源文件夹

Spring Boot默认会将所有位于classpath:/static、classpath:/public和classpath:/resources下的文件夹作为静态资源文件夹,并且访问时不需要经过Controller映射,即它们都可以直接通过浏览器路径访问。因此,我们只需要将jar包中的静态文件放入到这些文件夹中即可。

二、自定义静态资源路径

如果我们需要自定义静态资源路径,可以使用addResourceHandler和addResourceLocations方法来实现。其中,addResourceHandler用于指定对外暴露的访问路径,addResourceLocations用于指定静态资源文件夹的实际路径。

@Configuration
public class MyWebConfigurer implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/mystatic/**").addResourceLocations("classpath:/mystatic/");
    }

}

上面的代码用于将/mystatic路径映射到classpath:/mystatic/文件夹。这样,我们只需要将要放置到静态资源文件夹的文件放到classpath:/mystatic/路径下即可。

三、放行指定请求路径

在某些场景下,我们需要忽略某些请求路径中包含静态资源文件名的部分。比如请求路由为/mypage,但是该页面需要引用静态资源,此时请求路径中将会包含/mypage/js/myscript.js等静态资源文件名。此时,我们可以使用WebMvcConfigurer#addViewControllers方法来添加视图控制器来忽略这些请求。例如,下面的代码将会忽略所有匹配**/js/**和**/css/**的请求。

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/**/js/**").setViewName("forward:/");
        registry.addViewController("/**/css/**").setViewName("forward:/");
    }

}

四、放行Swagger请求

Swagger是一个非常流行的API文档工具,通常会将文档UI的HTML文件和JavaScript文件放在Spring Boot应用的classpath:/META-INF/resources/webjars/swagger-ui/{version}/文件夹下。在Swagger的配置中,我们需要开放相关URL才能正常访问。下面是一个放行Swagger请求的示例代码。

@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

五、放行自定义文件类型

在Spring Boot应用中,有些时候我们可能需要放行一些非常规的文件类型,比如PDF、TXT等。在WebMvcConfigurer的配置类中,我们可以使用ContentNegotiationConfigurer来设置允许访问的文件类型。例如,我们可以以下面的代码来放行PDF文件。

@Configuration
public class WebConfigurer implements WebMvcConfigurer {

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.mediaType("pdf", MediaType.APPLICATION_PDF);
    }

}

六、总结

Spring Boot静态资源放行是一个比较基础、必须掌握的应用开发技巧。本文介绍了使用默认静态文件夹、自定义静态文件夹路径、放行指定请求路径、放行Swagger请求和放行自定义文件类型等几个方面的技巧。通过掌握这些技巧,我们能够更加灵活、高效地开发Spring Boot应用。

原创文章,作者:NHZWN,如若转载,请注明出处:https://www.506064.com/n/369059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
NHZWNNHZWN
上一篇 2025-04-12 13:00
下一篇 2025-04-12 13:00

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • 运维Python和GO应用实践指南

    本文将从多个角度详细阐述运维Python和GO的实际应用,包括监控、管理、自动化、部署、持续集成等方面。 一、监控 运维中的监控是保证系统稳定性的重要手段。Python和GO都有强…

    编程 2025-04-29
  • Python wordcloud入门指南

    如何在Python中使用wordcloud库生成文字云? 一、安装和导入wordcloud库 在使用wordcloud前,需要保证库已经安装并导入: !pip install wo…

    编程 2025-04-29
  • Python应用程序的全面指南

    Python是一种功能强大而简单易学的编程语言,适用于多种应用场景。本篇文章将从多个方面介绍Python如何应用于开发应用程序。 一、Web应用程序 目前,基于Python的Web…

    编程 2025-04-29
  • Python小波分解入门指南

    本文将介绍Python小波分解的概念、基本原理和实现方法,帮助初学者掌握相关技能。 一、小波变换概述 小波分解是一种广泛应用于数字信号处理和图像处理的方法,可以将信号分解成多个具有…

    编程 2025-04-29
  • Python字符转列表指南

    Python是一个极为流行的脚本语言,在数据处理、数据分析、人工智能等领域广泛应用。在很多场景下需要将字符串转换为列表,以便于操作和处理,本篇文章将从多个方面对Python字符转列…

    编程 2025-04-29
  • Python飞机大战中文字资源分析

    Python飞机大战是一款经典的飞行射击游戏,在游戏过程中,玩家需要控制一架飞机不断消灭敌人,生存到最后。该游戏使用Python语言编写,其中涉及到的文字资源对游戏的整体体验有重要…

    编程 2025-04-29
  • Spring Boot 集成 Jacoco

    本文将从以下几个方面介绍如何在 Spring Boot 中集成 Jacoco:1、Jacoco 概述;2、Spring Boot 集成 Jacoco 的配置;3、生成 Jacoco…

    编程 2025-04-29
  • Python初学者指南:第一个Python程序安装步骤

    在本篇指南中,我们将通过以下方式来详细讲解第一个Python程序安装步骤: Python的安装和环境配置 在命令行中编写和运行第一个Python程序 使用IDE编写和运行第一个Py…

    编程 2025-04-29
  • FusionMaps应用指南

    FusionMaps是一款基于JavaScript和Flash的交互式地图可视化工具。它提供了一种简单易用的方式,将复杂的数据可视化为地图。本文将从基础的配置开始讲解,到如何定制和…

    编程 2025-04-29

发表回复

登录后才能评论