跳到主要内容

CDI 集成

DeepSeek V3 中英对照 CDI Integration

存储库接口的实例通常由容器创建,而在使用 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);
}
}
java

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();
}
}
java