[英]What does configureDefaultServletHandling means?
我試圖理解Spring MVC是如何工作的,我在Spring配置中不理解這部分代碼:
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
當它在我的WebContextApplication
類中時,一切正常,當它不存在時一切正常。 那么這種方法的目的是什么? 我的WebContextApplication
類應該有這個方法嗎? 為什么?
由於JB Nizet已經嘗試解釋這兩者都用於提供靜態資源。
所以你的問題是你的基於Java的Spring配置
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("/resources/bootstrap/");
}
那么你為什么需要呢?
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
或者為什么<mvc:default-servlet-handler/>
如果有的話
<mvc:resources mapping="/assets/**" location="/resources/bootstrap/" />
在xml配置方面。
要根據您提出的要求回答您的問題,您不需要覆蓋configureDefaultServletHandling()
因為您已經覆蓋並提供了靜態資源映射。
通過重寫addResourceHandlers()
方法,您實際上是要求ResourceHttpRequestHandler
提供資源提到的資源位置。
但是,如果覆蓋configureDefaultServletHandling()
並啟用它,則實質上是要求默認servlet(映射到“/”)來提供資源。 如果你使用這個,你需要注意幾件事。 引自文檔 -
這允許將DispatcherServlet映射到“/”(從而覆蓋容器的默認Servlet的映射),同時仍允許容器的默認Servlet處理靜態資源請求。 它配置DefaultServletHttpRequestHandler,其URL映射為“/ **”,並且相對於其他URL映射具有最低優先級。
此處理程序將所有請求轉發到默認Servlet。 因此,重要的是它按照所有其他URL HandlerMappings的順序保持最后。 如果您使用或者如果您要設置自己的自定義HandlerMapping實例,請確保將其order屬性設置為低於DefaultServletHttpRequestHandler的值,即Integer.MAX_VALUE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.