0

Spring Data RestとJPAを使用してプロジェクトに取り掛かり、HTTPインターセプタを設定しようとしています。Spring Data REST URLでSpringインターセプタが動作しない

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

    @Autowired 
    DBEditorTenantInterceptor dbEditorTenantInterceptor; 

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

} 

Spring Web MVC Docs - Config Interceptorsで説明したように(、次いで

@Component 
public class DBEditorTenantInterceptor extends HandlerInterceptorAdapter { 

    Logger logger = LoggerFactory.getLogger(DBEditorTenantInterceptor.class); 

    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
     throws Exception { 
     logger.debug("********** INTERCEPTION SUCCESSFUL **********"); 
     return true; 
    } 
} 

およびWebMvcConfigを拡張することによってインターセプタ登録:参照ドキュメントに従って、Spring Web MVC Docs - Handler Mapping Interceptorで利用可能 は、私は次のようにHandlerInterceptorAdapterを拡張するコンポーネントを作成し/ helloworldなどのSpring Data RESTで使用されていないURLにHTTPリクエストを発行すると、ロガー出力が表示されるので、インターセプタは正常に動作します。

017-10-26 13:16:24.689 DEBUG 17012 --- [p-nio-80-exec-4] c.c.v.d.DBEditorTenantInterceptor  : ********** INTERCEPTION SUCCESSFUL ********** 

ただし、春のデータ休憩でURLを使用すると、私の迎撃は呼び出されません。これは、/ api/{モデル内の既存のエンティティ}のようなすべてのURLに適用されます。

なぜ私のインターセプタはSpring Data Rest URLに対して呼び出されませんか?インターセプタをすべてのリクエストに対応させるにはどうすればよいですか?

ありがとうございます。

答えて

1

型MappedInterceptorのBeanを宣言し、HandlerInterceptorAdapterを継承するインターセプタを注入することで、インターセプタがSpring Data Restによって選択され、アプリケーション上の任意のURLに対して機能するようになりました。

これは、次の実装(私の元の質問に1を置き換える)に翻訳:

@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

    @Autowired 
    DBEditorTenantInterceptor dbEditorTenantInterceptor; 

    @Bean 
    public MappedInterceptor dbEditorTenantInterceptor() { 
     return new MappedInterceptor(new String[]{"/**"}, dbEditorTenantInterceptor); 
    } 

} 

残念ながら、私は春のマニュアルのこのへの参照を見つけることができませんでした。

関連する問題