欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

springboot2版本無法加載靜態(tài)資源問題怎么解決-創(chuàng)新互聯(lián)

這篇文章給大家介紹springboot2版本無法加載靜態(tài)資源問題怎么解決,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)公司主營寶山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),寶山h5重慶小程序開發(fā)搭建,寶山網(wǎng)站營銷推廣歡迎寶山等地區(qū)企業(yè)咨詢

前言

在學(xué)習(xí)springboot的過程中,發(fā)現(xiàn)無法引用靜態(tài)資源。我使用的是springboot2.2.1版本。

追溯源碼,終于解決。并記錄下解決思路。

默認(rèn)加載路徑

首先得知道springboot默認(rèn)加載得資源路徑是什么。

首先我們看WebMvcAutoConfiguration這個(gè)類。里面有一個(gè)方法叫做addResourceHandlers()

@Configuration(proxyBeanMethods = false)@ConditionalOnWebApplication(type = Type.SERVLET)@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,    ValidationAutoConfiguration.class })public class WebMvcAutoConfiguration {      

@Override    public void addResourceHandlers(ResourceHandlerRegistry registry) {    

if (!this.resourceProperties.isAddMappings()) {      

logger.debug("Default resource handling disabled");      

return;      }  

 Duration cachePeriod = this.resourceProperties.getCache().getPeriod();    

CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();          

//所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找資源      if (!registry.hasMappingForPattern("/webjars/**")) {        customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")            .addResourceLocations("classpath:/META-INF/resources/webjars/")            .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));      }          

//靜態(tài)資源文件夾映射      String staticPathPattern = this.mvcProperties.getStaticPathPattern();    

if (!registry.hasMappingForPattern(staticPathPattern)) {        customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)            .addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))            .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));      }    }}

首先springboot會(huì)將我們classpath:/META-INF/resources/webjars/路徑下的文件映射為/webjars/**

然后再一個(gè)if判斷進(jìn)行靜態(tài)資源文件夾映射,首先判斷我們是否以使用 "/**" 做映射

如果沒有,則將"/**" 訪問當(dāng)前項(xiàng)目的任何資源,都去(如下靜態(tài)資源的文件夾)找映射

"classpath:/META‐INF/resources/","classpath:/resources/","classpath:/static/","classpath:/public/""/":當(dāng)前項(xiàng)目的根路徑

什么意思呢?舉一個(gè)例子,就是說默認(rèn)情況下我們假如我們調(diào)用 http://localhost:8080/a.json

Springboot就會(huì)從上面得這幾個(gè)路徑下去找a.json這個(gè)文件。

問題所在

源碼也是如同猜想得這樣,那為什么我的代碼中,直接訪問靜態(tài)資源卻無法做映射呢?

我們再仔細(xì)看看WebMvcAutoConfiguration這個(gè)類。在其頭上有一個(gè)這個(gè)注解:

@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

臥槽,瞬間恍然大悟。在我得配置文件中:

@Configurationpublic class MyMVCConfig extends WebMvcConfigurationSupport{  ...}

繼承了WebMvcConfigurationSupport這個(gè)類,使得springboot的自動(dòng)裝配失效了。因?yàn)锧ConditionalOnMissingBean這個(gè)注解得作用就是,當(dāng)容器中不存在這個(gè)類,如下得代碼才有作用。

為什么會(huì)這樣設(shè)計(jì)呢?

因?yàn)橛袝r(shí)候我們得項(xiàng)目并不希望springboot給我們自動(dòng)裝配。希望完全由我們自己來配置自己來掌握。

要想達(dá)到這個(gè)效果,springboot給我們提供了一個(gè)更為簡潔得方式。

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(DelegatingWebMvcConfiguration.class)public @interface EnableWebMvc {}

@EnableWebMvc注解會(huì)導(dǎo)入DelegatingWebMvcConfiguration.clss

而DelegatingWebMvcConfiguration又繼承了WebMvcConfigurationSupport

public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {

所以當(dāng)我們加上@EnableWebMvc也會(huì)有同樣得效果且簡潔。

自定義配置資源映射

springboot當(dāng)然也支持我們個(gè)性化得指定映射路徑,我總結(jié)了如下幾個(gè)方式:

配置類

@Configurationpublic class MyMVCConfig extends WebMvcConfigurationSupport{  @Override  public void addResourceHandlers(ResourceHandlerRegistry registry) {       registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");    }}

上面的意思就是:將所有/static下得文件全部映射到/static/**

配置項(xiàng)

在application.properties文件中加上如下配置項(xiàng)

spring.mvc.static-path-pattern=/**spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/,classpath:/public/

spring.mvc.static-path-pattern=/**:表示所有的訪問都經(jīng)過靜態(tài)資源路徑;

spring.resources.static-locations:在這里配置靜態(tài)資源路徑。

關(guān)于springboot2版本無法加載靜態(tài)資源問題怎么解決就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文標(biāo)題:springboot2版本無法加載靜態(tài)資源問題怎么解決-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://aaarwkj.com/article12/hogdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、企業(yè)網(wǎng)站制作、面包屑導(dǎo)航、外貿(mào)建站全網(wǎng)營銷推廣、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
成人黄网站色大片免费| 爱我久久视频网免费视频| 人人妻夜夜天天俺去添噜| 亚洲va久久久噜噜噜久久狠| 国产91一区二区三区在线精品| 色吊丝二区三区中文字幕| 亚洲最大成人av在线| 五月婷婷综合中文字幕在线| 在线观看永久免费黄色| 欧美日韩一级一区二区| 亚洲另类偷拍校园伦理| 欧美国产激情一区二区| 国产亚洲精品热视频在线观看| 午夜激情视频在线网站| 日本欧美三级高潮受不了| 午夜少妇伦理一区二区| 亚洲人妖视频在线观看| 新午夜福利片在线观看| 在线观看成人激情视频| 亚洲华人在线免费视频| 在线播放国内自拍情侣酒店| 99精品国产一区二区青青性色| 亚洲一区二区三区精品福利| 和富婆啪啪一区二区免费看| 国产原创传媒在线观看| 久久亚洲欧洲日本韩国欧美| 欧美激情日韩精品久久久| 在线 | 一区二区三区四区 | 国产精品美女黄色av| 日本免费观看一区久久| 日韩欧美一区二区狠狠插| 欧美伊人久久综合成人网| 久久这里有精品免费观看| 国产精品久久久久精品三级下载| 国产亚洲欧美精品久久久久久| 欧美日韩国产精品乱人伦| 午夜福利视频欧美成人| 成人黄色片久久久大全| 黄片视频免费在线观看播放| 中文字幕一区二区久久综合| 国产综合一区在线观看97|