2010-09-09 60 views
0

我正在使用spring 3 mvc開發webapp並使用基於註釋的控制器。我想定義一個攔截器,它將攔截對所有bean的請求。我該怎麼做?對特定bean的Incept接受請求

現在我用下面的配置,但它攔截請求所有豆類

<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
     <list> 
      <ref bean="sessionInterceptor"/> 
     </list> 
    </property> 
</bean> 

<bean id="sessionInterceptor" class="app.interceptors.SessionCheckInterceptor"/> 

謝謝!

回答

1

在彈簧3可以使用mvc namespace結合攔截器對特定網址:

<mvc:interceptors> 
    <mvc:interceptor> 
     <bean class="app.interceptors.SessionCheckInterceptor" /> 
     <mvc:mapping path = "/somePath/**" /> 
    </mvc:interceptor> 
</mvc:interceptors> 

對於更復雜的情況下,則也可以使用AOP來攔截控制器的方法調用。

1

我認爲攔截對你的bean的調用的最佳選擇是使用Spring AOP

@Aspect 
public class AroundExample { 

    @Around("com.xyz.myapp.SystemArchitecture.businessService()") 
    public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { 
    // start stopwatch 
    Object retVal = pjp.proceed(); 
    // stop stopwatch 
    return retVal; 
    } 
} 
0

我發現使用springplugins項目(http://code.google.com/p/springplugins/) 它定義了兩個自己的製圖者的解決方案:

  • SelectedAnnotationHandlerMapping只能處理定義URL的

  • IgnoreSelectedAnnotationHandlerMapping處理所有URS的除了定義

如果您知道解決此問題的更好方法,歡迎您致電