java - 如何在 Spring MVC 中向拦截器注入(inject)属性

标签 java spring spring-mvc

我将 spring mvc 应用程序配置从 xml 更改为代码。 自更改以来,我的拦截器中的所有注入(inject)属性都是 null (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/**");
    }

你能说说我做错了什么吗?

谢谢

最佳答案

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

关于java - 如何在 Spring MVC 中向拦截器注入(inject)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17211916/

相关文章:

java - 组织.hibernate.PropertyAccessException : Could not set field value with Composite Key

java - EasyMock:带有回调参数的方法

java - 程序将识别某些关键输入,但不能识别其他输入。

java - Spring 中用户相关的 bean 定义

Java:通过静态计数器在不可变对象(immutable对象)上使用唯一的 hashCode()

java - 为什么我的 Spring Boot Web 应用程序无法在 Gradle 中完全运行?

spring - 为什么 spring-vaadin 忘记了我设置的语言环境,但在页面刷新后突然记住了?

spring-mvc - OSGi Spring MVC 捆绑噩梦 - java.lang.ClassNotFoundException : org. springframework.context.config.ContextNamespaceHandler 从捆绑中找不到

java - 创建名称为 'studentController' : Injection of autowired dependencies failed 的 bean 时出错

java - jackson 错误 com.fasterxml.jackson.databind.ser.ContainerSerializer : method <init>(Lcom/fasterxml/jackson/databind/JavaType;)V not found