2010-09-09 115 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的除了定义

如果您知道解决此问题的更好方法,欢迎您致电