CDI 整合

倉庫介面的例項通常由容器建立,而 Spring 是使用 Spring Data 時最自然的選擇。 從 1.3.0 版本開始,Spring Data MongoDB 附帶了一個自定義 CDI 擴充套件,允許您在 CDI 環境中使用倉庫抽象。 該擴充套件是 JAR 的一部分。 要啟用它,請將 Spring Data MongoDB JAR 放入您的類路徑中。 您現在可以透過為 MongoTemplate 實現 CDI Producer 來設定基礎架構,如下例所示

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 注入屬性的問題,如下例所示

class RepositoryClient {

  @Inject
  PersonRepository repository;

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