Не принимать запросы к конкретным компонентам - PullRequest
0 голосов
/ 09 сентября 2010

Я разрабатываю веб-приложение с использованием Spring 3 MVC и с использованием контроллеров на основе аннотаций. Я хочу определить перехватчик, который будет перехватывать запросы к конкретным компонентам не для всех. Как я могу это сделать?

Теперь я использую следующий конфиг, но он перехватывает запросы ко всем бобам

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 сентября 2010

Я думаю, что лучший выбор для перехвата вызовов вашего компонента - 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;
  }
}
1 голос
/ 09 сентября 2010

В Spring 3 вы можете привязать перехватчики к определенным URL, используя mvc пространство имен :

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

В более сложных случаях вы также можете использовать AOP для перехвата вызовов методов контроллера.

0 голосов
/ 09 сентября 2010

Я нашел решение, используя проект springplugins (http://code.google.com/p/springplugins/) Он определяет два собственных преобразователя:

  • SelectedAnnotationHandlerMapping обрабатывает только определенные URL-адреса

  • IgnoreSelectedAnnotationHandlerMapping обрабатывает все пользовательские файлы, кроме определенных

Если вы знаете лучший способ решения этой проблемы, добро пожаловать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...