私はSpring Bootを使用しています。RequestMappingHandlerMappingとWebMvcConfigurerAdapter
私はそれにRequestMappingHandlerMappingを注入したクラスを持っています。
class Foo {
private final RequestMappingHandlerMapping mapping;
Foo(RequestMappingHandlerMapping mapping) {
this.mapping = mapping;
}
}
私は、FooとRequestMappingHandlerMappingをBeanとして吐き出す設定をしています。
@Configuration
class Bar extends RepositoryRestMvcConfiguration {
@Bean
public Foo foo(){
return new Foo(requestMappingHandlerMapping());
}
@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping(){
return new RequestMappingHandlerMapping();
}
}
最後に、WebMvcConfigurerAdapterを拡張するもう1つのクラスがあります。私は気づく何
@Configuration
class Baz extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(<some interceptor>).addPathPatterns(URL_PATTERN);
}
}
があるためRequestMappingHandlerMappingの、私のインターセプタがない登録を受けるということです。 RequestMappingHandlerMappingをコメントアウトするとき、またはBazを変更してWebMvcConfigurationSupportを拡張するときに、インターセプタが登録されます。
これを引き起こす可能性のあることはまったくわかりません。このため、WebMvcConfigurerAdapterを継承するRepositoryRestMvcConfigurationのスーパークラスも登録されません。誰かがこの行動の理由を説明することで私を助けることができますか?
インターセプターが登録されているBazクラスに@EnableWebMvcを置くと、登録されます。しかし残念なことに、コントローラへのPOST要求は、201ではなく415を返します。コントローラには@RestControllerという注釈が付けられ、hal + jsonというメディアタイプが使用されます。
Springブートを使用していますか? – nowszy94