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);
}
}
は今、それはRequestInterceptor
のpreHandle
方法で土地が、RequestParser
はNULLです。 注釈をRequestParser
から削除すると、Springコンテキストの初期化中にエラーが発生します。No bean found of type RequestParser
つまり、RequestParser
はSpringコンテキストでSpring Beanとして登録されていますが、注入時にNULLになっているのはなぜですか?助言がありますか?
おそらく、 'RequestParserDefault'が置かれているパッケージの' @ ComponentScan'が必要です。 –
@IndraBasak私はそれが '@ Component'アノテーションを削除すると、コンテキストの初期化中にエラーが発生するので、Beanを見つけて登録できると思います。 –
'HandlerInterceptorAdapter'を' WebMvcConfigurerAdapter'に登録しましたか? –