Spring-data-restを使用するプロジェクトがあり、Spring Dataのみを使用する依存関係プロジェクトがあります。どちらのプロジェクトにもSpringデータリポジトリがあり、@EnableJpaRepositories
を使用してリポジトリインターフェースを実装していますが、親プロジェクトのリポジトリのみをエクスポートします。
ここに私の質問があります:親プロジェクトのリソースの残りのエンドポイントのみを公開するようにSpring Data RESTを構成する方法はありますか?@RepositoryRestResource(exported = false)
?
@RepositoryRestResource
を無効にしてのみこれを行うことができ、さらに悪いことに、別のユースケースを持つ他のプロジェクトがこれらのリポジトリのRESTエンドポイントを有効にできない場合、私の依存関係プロジェクトには、Spring Data RESTのみを含める必要があります…
現在、探しているものをグローバルに切り替える方法はありません。次のメジャーリリースに含めるために this ticket を提出しました。
それがオプションかどうかはわかりませんが、明示的に注釈を付けない限り、パッケージのプライベートリポジトリインターフェイスは現在公開されていません。これらすべてのライブラリリポジトリパッケージを保護できる場合は、明示的な注釈よりも有利です。
この特定の設定を探していたため、ここにループバックします。これは現在実装されているようです。この場合、spring.data.rest.detection-strategy = annotatedを設定して、デフォルトの露出を回避します。
すべてのapplication.propertiesオプション:
# Exposes all public repository interfaces but considers @(Repository)RestResource\u2019s `exported flag.
spring.data.rest.detection-strategy=default
# Exposes all repositories independently of type visibility and annotations.
spring.data.rest.detection-strategy=all
# Only repositories annotated with @(Repository)RestResource are exposed, unless their exported flag is set to false.
spring.data.rest.detection-strategy=annotated
# Only public repositories annotated are exposed.
spring.data.rest.detection-strategy=visibility
参照