跳到主要内容
版本:5.1.1

CDI 集成

Doubao 中英对照 CDI Integration

仓库接口的实例通常由容器创建,而在使用 Spring Data 时,Spring 容器是最自然的选择。Spring Data for Apache Cassandra 自带一个定制的 CDI 扩展,让您能够在 CDI 环境中使用仓库抽象。该扩展包含在 JAR 包中。要启用它,只需将 Spring Data for Apache Cassandra JAR 包放入您的 classpath。接下来,您可以通过为 CassandraTemplate 实现一个 CDI 生产者来搭建基础设施,如下例所示:

class CassandraTemplateProducer {

@Produces
@Singleton
public CqlSession createSession() {
return CqlSession.builder().withKeyspace("my-keyspace").build();
}

@Produces
@ApplicationScoped
public CassandraOperations createCassandraOperations(CqlSession session) {

CassandraMappingContext mappingContext = new CassandraMappingContext();
mappingContext.afterPropertiesSet();

MappingCassandraConverter cassandraConverter = new MappingCassandraConverter(mappingContext);
cassandraConverter.setUserTypeResolver(new SimpleUserTypeResolver(session));
cassandraConverter.afterPropertiesSet();

return new CassandraAdminTemplate(session, cassandraConverter);
}

public void close(@Disposes CqlSession session) {
session.close();
}
}

Spring Data for Apache Cassandra CDI 扩展会将 CassandraOperations 拾取为 CDI Bean,并在容器请求仓库类型的 Bean 时为 Spring Data 仓库创建代理。因此,获取 Spring Data 仓库的实例只需声明一个注入的属性,如下例所示:

class RepositoryClient {

@Inject PersonRepository repository;

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