簡體   English   中英

在Spring Boot應用程序中注入的Spring Bean為NULL

[英]Injected Spring Bean is NULL in Spring Boot Application

我正在使用Spring Boot(1.5.3)開發REST Web服務。 為了對傳入請求采取某些措施,我添加了以下所示的攔截器。

@Component
public class RequestInterceptor extends HandlerInterceptorAdapter {

@Autowired
RequestParser requestParser;


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

    //HandlerMethod handlerMethod = (HandlerMethod) handler;
    requestParser.parse(request);
    return true;
}
}

RequestInterceptor具有自動接線的Spring Bean RequestParser負責解析請求。

@Component
public class RequestParserDefault implements RequestParser {

@Override
public void parse(HttpServletRequest request) {

    System.out.println("Parsing incomeing request");
}

}

攔截器注冊

@Configuration  
public class WebMvcConfig extends WebMvcConfigurerAdapter  {  

@Override
public void addInterceptors(InterceptorRegistry registry) {
   registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/usermanagement/v1/**");
}
} 

還有我的Spring Boot應用程序

@SpringBootApplication
public class SpringBootApp {

public static void main(String[] args) {
    SpringApplication.run(SpringBootApp.class, args);

}
}

現在,當一個請求進入時,它進入RequestInterceptor preHandle方法中,但是RequestParser為NULL。 如果我從RequestParser刪除@Component批注,則會在Spring上下文初始化期間收到錯誤消息, No bean found of type RequestParser 這意味着RequestParser在Spring上下文中注冊為Spring bean,但是為什么在注入時為NULL? 有什么建議么?

您的問題出在這個new RequestInterceptor() 重寫您的WebMvcConfig以注入它,例如:

@Configuration  
public class WebMvcConfig extends WebMvcConfigurerAdapter  {  

  @Autowired
  private RequestInterceptor requestInterceptor;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(requestInterceptor)
            .addPathPatterns("/usermanagement/v1/**");
  }
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM