CDI 整合
倉庫介面的例項通常由容器建立,而在使用 Spring Data 時,Spring 是最自然的選擇。從 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 擴充套件會獲取可用的 MongoTemplate 作為 CDI Bean,並在容器請求倉庫型別的 Bean 時為 Spring Data 倉庫建立代理。因此,獲取 Spring Data 倉庫例項只需宣告一個 @Inject 註解的屬性,如下例所示:
class RepositoryClient {
@Inject
PersonRepository repository;
public void businessMethod() {
List<Person> people = repository.findAll();
}
}