Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接收到特定bean的请求_Java_Spring Mvc - Fatal编程技术网

Java 接收到特定bean的请求

Java 接收到特定bean的请求,java,spring-mvc,Java,Spring Mvc,我正在使用Spring3MVC和基于注释的控制器开发webapp。我想定义一个拦截器,它将截获对特定bean的请求,而不是全部。我怎么能做到 现在我使用下面的配置,但它拦截对所有bean的请求 <bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interce

我正在使用Spring3MVC和基于注释的控制器开发webapp。我想定义一个拦截器,它将截获对特定bean的请求,而不是全部。我怎么能做到

现在我使用下面的配置,但它拦截对所有bean的请求

 <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"/>


谢谢

在Spring 3中,您可以使用以下方法将拦截器绑定到特定URL:



对于更复杂的情况,您还可以使用AOP来拦截控制器方法调用。

我认为拦截对bean的调用的最佳选择是使用


我已经找到了一个使用springplugins项目()的解决方案 它定义了两个自己的映射器:

  • SelectedAnnotationHandlerMappingHandle仅用于定义的url

  • IgnoreSelectedAnnotationHandlerMapping处理除已定义之外的所有UR

如果你知道解决这个问题的更好方法,欢迎你

<mvc:interceptors>
    <mvc:interceptor>
        <bean class="app.interceptors.SessionCheckInterceptor" />
        <mvc:mapping path = "/somePath/**" />
    </mvc:interceptor>
</mvc:interceptors>
@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;
  }
}