此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Data Cassandra 4.4.0spring-doc.cn

CDI 集成

存储库接口的实例通常由容器创建,而 Spring 容器是处理 Spring Data 时最自然的选择。 Spring Data for Apache Cassandra 附带了一个自定义 CDI 扩展,允许在 CDI 环境中使用存储库抽象。 该扩展是激活它 JAR.To 的一部分,请将 Spring Data for Apache Cassandra JAR 拖放到 Classpath 中。 现在,您可以通过为 实施 CDI 创建器来设置基础设施,如以下示例所示:CassandraTemplatespring-doc.cn

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

每当容器请求存储库类型的 Bean 时,Spring Data for Apache Cassandra CDI 扩展都会选取作为 CDI Bean 并为 Spring Data 存储库创建代理。 因此,获取 Spring Data 存储库的实例是声明注入属性的问题,如下例所示:CassandraOperationsspring-doc.cn

class RepositoryClient {

	@Inject PersonRepository repository;

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