2

我将我的 spring mvc 应用程序配置从 xml 更改为代码。自更改以来,我的拦截器中的所有注入属性均为空(authenticationService)。

代码如下所示:

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/**");
    }

你能说明我在做什么错吗?

谢谢

4

2 回答 2

3

您正在使用new关键字创建对象。而是尝试在您的 Spring 配置中定义WebAuthenticationInterceptorMobileAuthenticationInterceptor@Bean

于 2013-06-20T20:15:04.313 回答
1

注入是由 Spring 注释进行的,从 3.x 版本开始,它也可以与 java 注释 (@Inject) 一起使用。

利用

@Autowired
private IAuthenticationService authenticationService;
于 2013-06-20T16:08:04.630 回答