web-dev-qa-db-ja.com

Spring Dataのデフォルトの公開を無効にする方法RESTリポジトリ?

Spring-data-restを使用するプロジェクトがあり、Spring Dataのみを使用する依存関係プロジェクトがあります。どちらのプロジェクトにもSpringデータリポジトリがあり、@EnableJpaRepositoriesを使用してリポジトリインターフェースを実装していますが、親プロジェクトのリポジトリのみをエクスポートします。

ここに私の質問があります:親プロジェクトのリソースの残りのエンドポイントのみを公開するようにSpring Data RESTを構成する方法はありますか?@RepositoryRestResource(exported = false)

@RepositoryRestResourceを無効にしてのみこれを行うことができ、さらに悪いことに、別のユースケースを持つ他のプロジェクトがこれらのリポジトリのRESTエンドポイントを有効にできない場合、私の依存関係プロジェクトには、Spring Data RESTのみを含める必要があります…

23
gyoder

現在、探しているものをグローバルに切り替える方法はありません。次のメジャーリリースに含めるために this ticket を提出しました。

それがオプションかどうかはわかりませんが、明示的に注釈を付けない限り、パッケージのプライベートリポジトリインターフェイスは現在公開されていません。これらすべてのライブラリリポジトリパッケージを保護できる場合は、明示的な注釈よりも有利です。

16
Oliver Drotbohm

この特定の設定を探していたため、ここにループバックします。これは現在実装されているようです。この場合、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

参照

38
Brian