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 儲存庫建立 Proxy。因此,取得 Spring Data 儲存庫的實例只需宣告一個 @Inject
注入的屬性,如下列範例所示
class RepositoryClient {
@Inject
PersonRepository repository;
public void businessMethod() {
List<Person> people = repository.findAll();
}
}