对于最新的稳定版本,请使用 Spring Data Cassandra 5.0.4spring-doc.cadn.net.cn

CDI 集成

仓库接口的实例通常由容器创建,而在使用 Spring Data 时,Spring 容器是最自然的选择。 Spring Data for Apache Cassandra 提供了一个自定义的 CDI 扩展,允许在 CDI 环境中使用仓库抽象。 该扩展包含在 JAR 文件中。要激活它,只需将 Spring Data for Apache Cassandra 的 JAR 文件放入您的类路径中即可。 现在,您可以通过实现一个用于 CassandraTemplate 的 CDI Producer 来设置基础设施,如下例所示:spring-doc.cadn.net.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();
	}
}

Apache Cassandra 的 Spring Data CDI 扩展会将 CassandraOperations 作为 CDI Bean 进行获取,并在容器请求某个仓库类型的 Bean 时,为 Spring Data 仓库创建一个代理。 因此,获取 Spring Data 仓库实例只需声明一个注入属性即可,如下例所示:spring-doc.cadn.net.cn

class RepositoryClient {

	@Inject PersonRepository repository;

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