在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/zh-tw/n/369059.html