CDI 統合

リポジトリインターフェースのインスタンスは通常、コンテナーによって作成され、Spring Data を使用する場合は Spring が最も自然な選択になります。バージョン 1.3.0 の時点で、Spring Data MongoDB には、CDI 環境でリポジトリ抽象化を使用できるようにするカスタム CDI 拡張機能が付属しています。拡張機能は JAR の一部です。これをアクティブにするには、Spring Data MongoDB JAR をクラスパスにドロップします。次の例に示すように、MongoTemplate の CDI プロデューサーを実装してインフラストラクチャをセットアップできるようになりました。

class MongoTemplateProducer {

    @Produces
    @ApplicationScoped
    public MongoOperations createMongoTemplate() {

        MongoDatabaseFactory factory = new SimpleMongoClientDatabaseFactory(MongoClients.create(), "database");
        return new MongoTemplate(factory);
    }
}

Spring Data MongoDB CDI 拡張機能は、CDI Bean として使用可能な MongoTemplate を選択し、コンテナーによってリポジトリ型の Bean がリクエストされるたびに、Spring Data リポジトリのプロキシを作成します。次の例に示すように、Spring Data リポジトリのインスタンスを取得するには、@Inject -ed プロパティを宣言する必要があります。

class RepositoryClient {

  @Inject
  PersonRepository repository;

  public void businessMethod() {
    List<Person> people = repository.findAll();
  }
}