跳到主要内容

CDI 集成

ChatGPT-4o-mini 中英对照 CDI Integration

存储库接口的实例通常由容器创建,而 Spring 容器是使用 Spring Data 时最自然的选择。Apache Cassandra 的 Spring Data 附带一个自定义的 CDI 扩展,允许在 CDI 环境中使用存储库抽象。该扩展是 JAR 的一部分。要激活它,请将 Apache Cassandra 的 Spring Data JAR 放入您的类路径中。现在,您可以通过实现 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();
}
}
java

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

class RepositoryClient {

@Inject PersonRepository repository;

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