我有一個配置類,它擴展WebMvcConfigurationSupport
和我已經加入攔截器是這樣的:攔截器用於與Java配置不存在請求映射
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor()).addPathPatterns("/api/**");
}
其中myInterceptor()
是:
@Bean
public MyInterceptor myInterceptor() {
return new MyInterceptor();
}
和它的工作原理罰款的任何映射(/api/**
),我已經實施例如/api/sample
- 從MyInterceptor preHandle被解僱(我有一個控制器與映射/api/sample
)。
當我打電話不存在資源例如/api/forward/sample
從MyInterceptor preHandle永遠不會被調用。
請注意它的工作時,我曾在配置XML,像預期:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/**" />
<bean class="my.pack.MyInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
出於某種原因,與Java的配置要求爲不存在的映射不會攔截。爲什麼配置不等效?我認爲它應該是。
編輯:
多一點的調試信息。使用XML配置DispatcherServlet#handlerMappings
包含5個處理:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.socket.server.support.WebSocketHandlerMapping
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
與Java配置中,包含7個處理器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
org.springframework.web.socket.server.support.WebSocketHandlerMapping
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping
org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
這個問題似乎是與SimpleUrlHandlerMapping
(至少它似乎是用於我所說的資源 - api/forward/sample
,而api/sample
RequestMappingHandlerMapping
正在使用中),在基於Java的配置的情況下,它具有空的已採用的接受器。
編輯2:
作爲樣品施加完整的源代碼(I試圖使它儘可能小隻是爲了演示的效果): https://github.com/szprutamich/spring-demo
在ConfigurationBase
類 - 構型可以切換從基於xml的到基於靜態字段的java CONFIG
。
與基於XML配置兩個URL工作:
/api/sample
/api/forward/sample
與Java配置着不起作用。
你可以分享傳遞的URL和相關的web.xml片段嗎? – VinPro
請檢查我最後的編輯。讓我知道你是否需要知道其他事情。 – maszter