アノテーションインターフェース BatchMapping


@TargetSE(METHODSE) @RetentionSE(RUNTIMESE) @DocumentedSE public @interface BatchMapping
ソース / 親値のリストを指定して、フィールド値をバッチでロードするハンドラーメソッドのアノテーション。例:
 @BatchMapping
 public Mono<Map<Book, Author>> author(List<Book> books) {
     // ...
 }
 

アノテーションが付けられたメソッドは、BatchLoaderRegistry を介してバッチロード関数として登録され、それとともに、登録された DataLoader を介してフィールド値を検索するフィールドの DataFetcher が透過的に登録されます。

事実上、次のショートカットです。

 @Controller
 public class BookController {

     public BookController(BatchLoaderRegistry registry) {
         registry.forTypePair(Long.class, Author.class).registerMappedBatchLoader((ids, environment) -> ...);
     }

     @SchemaMapping
     public CompletableFuture<Author> author(Book book, DataLoader<Long, Author> dataLoader) {
         return dataLoader.load(book.getAuthorId());
     }

 }
 

Mono<Map<K,T>> を返すことに加えて、@BatchMapping メソッドは Flux<T> を返すこともできます。ただし、その場合、返される値のシーケンスは、入力キーの数と順序と一致する必要があります。詳細については、BatchLoader および MappedBatchLoader を参照してください。

導入:
1.0.0
作成者:
Rossen Stoyanchev
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    バインドする GraphQL フィールドの名前をカスタマイズします。
    int
    ロードするキーの複数のバッチに分割する前に、1 つのバッチに含めるキーの最大数を設定します。
    GraphQL フィールドのソース / 親型の名前をカスタマイズします。
    実質的に field() のエイリアスです。
  • 要素の詳細

    • field

      @AliasFor("value") StringSE field
      バインドする GraphQL フィールドの名前をカスタマイズします。

      デフォルトでは、指定されていない場合、これはメソッド名から初期化されます。

      デフォルト:
      ""
    • value

      @AliasFor("field") StringSE value
      実質的に field() のエイリアスです。
      デフォルト:
      ""
    • typeName

      StringSE typeName
      GraphQL フィールドのソース / 親型の名前をカスタマイズします。

      デフォルトでは、指定されていない場合、ハンドラーメソッドに注入されたソース / 親値のリストの単純なクラス名に基づいています。

      この属性の値は、クラスレベルの @SchemaMapping から継承することもできます。両方のレベルで使用すると、ここにあるものはクラスレベルのものをオーバーライドします。

      デフォルト:
      ""
    • maxBatchSize

      int maxBatchSize
      ロードするキーの複数のバッチに分割する前に、1 つのバッチに含めるキーの最大数を設定します。

      デフォルトでは -1 で、制限はありません。

      導入:
      1.1.0
      デフォルト:
      -1