2016-08-01 87 views
1

我有一個應用程序,我使用兩個映射到單個Dispatcher servlet的URL。具有單個調度程序servlet和servlet配置的兩個URL如何映射到不同的包,並且一個包只能允許兩個URL之一?

<servlet> 
     <servlet-name>Default Webservice</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       /WEB-INF/spring-servlet.xml 
      </param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Default Webservice</servlet-name> 
     <url-pattern>/abc/*</url-pattern> 
     <url-pattern>/xyz/*</url-pattern> 
    </servlet-mapping> 

爲spring-servlet.xml有分量的掃描儀。我想要一些方法,以便我可以允許帶有/abc/*模式的url只能訪問特定的包,而不是調度器servlet正在掃描的所有包。

PS:我無法更改現有的url映射或創建新的調度程序servlet。

+0

如果你,從答案滿足,請接受它 –

回答

1

這是不可能發生的,因爲組件掃描是在spring初始化調度程序servlet時運行的,並且您的url請求是在初始化後發生的。因此,在請求之前掃描包是由spring發生的。因此,您不能組件掃描的條件。

如果這兩個網址無法一起工作(指在一個時刻只能有一個網址是活躍請求)。然後可以看到使用

  1. @Conditional註釋

  2. @profile註解

+0

感謝您的回答Ashwani。我會嘗試使用這些註釋。我認爲除了在控制器級別上過濾請求外沒有別的辦法。 – akash

+0

是的,爲了在控制器級別之前過濾請求,你可以去Spring Security。如果我正確地猜測你需要 –

相關問題