2017-09-27 15 views
0

Springブート(1.5.3)を使用してREST Webサービスを開発しています。着信要求に対して何らかのアクションをとるために、以下に示すインターセプタを追加しました。Spring起動アプリケーションで注入されたSpring BeanがNULLです

@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 autowired春豆の要求を解析するための責任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/**"); 
} 
} 

そして、私の春ブーツアプリケーション

@SpringBootApplication 
public class SpringBootApp { 

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

} 
} 

は今、それはRequestInterceptorpreHandle方法で土地が、RequestParserはNULLです。 注釈をRequestParserから削除すると、Springコンテキストの初期化中にエラーが発生します。No bean found of type RequestParserつまり、RequestParserはSpringコンテキストでSpring Beanとして登録されていますが、注入時にNULLになっているのはなぜですか?助言がありますか?

+0

おそらく、 'RequestParserDefault'が置かれているパッケージの' @ ComponentScan'が必要です。 –

+0

@IndraBasak私はそれが '@ Component'アノテーションを削除すると、コンテキストの初期化中にエラーが発生するので、Beanを見つけて登録できると思います。 –

+0

'HandlerInterceptorAdapter'を' WebMvcConfigurerAdapter'に登録しましたか? –

答えて

1

この問題は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/**"); 
    } 
} 
関連する問題