2013-06-20 2 views
2

Я изменил конфигурацию приложения Spring mvc от xml до кода. С момента изменения все введенные свойства в моих перехватчиках равны null (authenticationService).Как ввести свойство перехватчику в Spring MVC

код выглядит следующим образом:

public class WebAuthenticationInterceptor extends HandlerInterceptorAdapter { 


    @Resource(type=WebAuthenticationService.class) 
    private IAuthenticationService authenticationService; 

    @Override 
    public boolean preHandle(HttpServletRequest request, 
      HttpServletResponse response, Object handler) throws Exception { 


     if(authenticationService.authenticate(request).authenticated == false) 
     { 
      if(isAjax(request)) 
       response.sendError(HttpServletResponse.SC_UNAUTHORIZED); 
      else 
       response.sendRedirect(String.format("%s/#/account/logout", request.getContextPath())); 

      return false; 
     } 
     return true; 

    } 

    public static boolean isAjax(HttpServletRequest request) { 
     return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); 
    } 
} 

и перехватчик конфигурации:

@Override 
    public void addInterceptors(InterceptorRegistry registry) { 

     registry.addInterceptor(new WebAuthenticationInterceptor()).addPathPatterns("/home/**"); 
     registry.addInterceptor(new MobileAuthenticationInterceptor()).addPathPatterns("/api/**"); 
    } 

Не могли бы вы заявить, что я делаю неправильно?

Спасибо

+5

Вы создаете объект, используя ключевое слово 'new'. Вместо этого попробуйте определить 'WebAuthenticationInterceptor' и' MobileAuthenticationInterceptor' как '@ Bean' в конфигурации Spring. – dimchez

+0

@dimchez Добавьте это как ответ. –

+0

@TomG ok, отправил мой комментарий как ответ – dimchez

ответ

1

Инъекция производится Spring аннотацию и так 3.х версии он также работает с Java аннотаций (@Inject).

использование

@Autowired 
private IAuthenticationService authenticationService; 
+0

это не отвечает на вопрос. Рассмотрите свой ответ. –

+0

Я использую @Autowired аннотацию для инъекций зависимостей. Вероятно, это не единственная проблема в этом случае, как я вижу сейчас через 3 года, но использование этой аннотации кажется правильным. –

3

Вы создаете объект, используя ключевое слово new. Вместо этого попробуйте определить WebAuthenticationInterceptor и MobileAuthenticationInterceptor как @Bean в вашей конфигурации Spring

Смежные вопросы