《Spring Data官方文档》5.3. Connecting to Cassandra with Spring至5.5. Introduction to CassandraTemplate

5.3. 连接到Spring Cassandra

5.3.1. 外部化连接属性

你需要连接到Cassandra来创建配置文件信息。接触点是键空间的所必需的最小字段,但是为了清楚起见,最好能添加端口。

我们称这些为cassandra.properties

cassandra.contactpoints=10.1.55.80,10.1.55.81
cassandra.port=9042
cassandra.keyspace=showcase

下面两个例子中我们将使用spring把这些属性加载到Spring上下文.

5.3.2. XML 配置

一个Cassandra基础配置中的XML配置元素如下所示。 这些元素都使用默认bean名称来保持配置代码干净和可读。

这个例子说明配置Spring连接Cassandra很方便,而且还有一些其他选项可以用。Spring Data Cassandra配置中还提供了可供DataStax Java驱动程序使用的一切选项。 这包括但不限于身份验证,负载平衡策略,重试策略和池选项。所有Spring Data Cassandra方法名称和XML元素都采用驱动程序上的配置选项同样(或差不都)的命名,因此应该直接的映射任意已有的驱动程序配置。

<?xml version='1.0'?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/cql http://www.springframework.org/schema/cql/spring-cql-1.0.xsd
    http://www.springframework.org/schema/data/cassandra http://www.springframework.org/schema/data/cassandra/spring-cassandra-1.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

  <!-- Loads the properties into the Spring Context and uses them to fill
    in placeholders in the bean definitions -->
  <context:property-placeholder location="classpath:cassandra.properties" />

  <!-- REQUIRED: The Cassandra Cluster -->
  <cassandra:cluster contact-points="${cassandra.contactpoints}"
    port="${cassandra.port}" />

  <!-- REQUIRED: The Cassandra Session, built from the Cluster, and attaching
    to a keyspace -->
  <cassandra:session keyspace-name="${cassandra.keyspace}" />

  <!-- REQUIRED: The Default Cassandra Mapping Context used by CassandraConverter -->
  <cassandra:mapping />

  <!-- REQUIRED: The Default Cassandra Converter used by CassandraTemplate -->
  <cassandra:converter />

  <!-- REQUIRED: The Cassandra Template is the building block of all Spring
    Data Cassandra -->
  <cassandra:template id="cassandraTemplate" />

  <!-- OPTIONAL: If you are using Spring Data Cassandra Repositories, add
    your base packages to scan here -->
  <cassandra:repositories base-package="org.spring.cassandra.example.repo" />

</beans>

5.3.3. Java 配置

下面的类展示了AnnotationConfigApplicationContext(aka JavaConfig)中的最基本的Cassandra配置。

package org.spring.cassandra.example.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
import org.springframework.data.cassandra.config.CassandraSessionFactoryBean;
import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.convert.CassandraConverter;
import org.springframework.data.cassandra.convert.MappingCassandraConverter;
import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories;

@Configuration
@PropertySource(value = { "classpath:cassandra.properties" })
@EnableCassandraRepositories(basePackages = { "org.spring.cassandra.example.repo" })
public class CassandraConfig {

  private static final Logger LOG = LoggerFactory.getLogger(CassandraConfig.class);

  @Autowired
  private Environment env;

  @Bean
  public CassandraClusterFactoryBean cluster() {

    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
    cluster.setContactPoints(env.getProperty("cassandra.contactpoints"));
    cluster.setPort(Integer.parseInt(env.getProperty("cassandra.port")));

    return cluster;
  }

  @Bean
  public CassandraMappingContext mappingContext() {
    return new BasicCassandraMappingContext();
  }

  @Bean
  public CassandraConverter converter() {
    return new MappingCassandraConverter(mappingContext());
  }

  @Bean
  public CassandraSessionFactoryBean session() throws Exception {

    CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
    session.setCluster(cluster().getObject());
    session.setKeyspaceName(env.getProperty("cassandra.keyspace"));
    session.setConverter(converter());
    session.setSchemaAction(SchemaAction.NONE);

    return session;
  }

  @Bean
  public CassandraOperations cassandraTemplate() throws Exception {
    return new CassandraTemplate(session().getObject());
  }
}

5.4. 常规评审配置

评审支持在当前版本中不可用。

5.5. CassandraTemplate简介

5.5.1. 实例化CassandraTemplate

虽然我们在上面展示一个你可以直接实例化它的例子,但是’CassandraTemplate’应该始终被配置为一个Spring Bean。为了这个存在的Spring模块的目的,在此我们假定我们使用Spring容器。

‘CassandraTemplate’是’CassandraOperations’的实现类。 你应该指定你的’CassandraTemplate’实现它的接口定义,’CassandraOperations’。

有两个简单的方式来获取’CassandraTemplate’,取决于你如何加载你的Spring应用程序上下文。

自动装配
@Autowired
private CassandraOperations cassandraOperations;

像所有Spring Autowiring,这里假设在’ApplicationContext’中只有一个类型为’CassandraOperations’的bean。 如果您有多个“CassandraTemplate”bean(如果您在同一个项目中使用多个键空间,则会是这种情况),可以添加 [email protected]/* */`注解到你想要自动装配的bean。

@Autowired
@Qualifier("myTemplateBeanId")
private CassandraOperations cassandraOperations;
使用ApplicationContext来查找Bean

你也可以从’ApplicationContext’中查找’CassandraTemplate’bean。

CassandraOperations cassandraOperations = applicationContext.getBean("cassandraTemplate", CassandraOperations.class);

转载自 并发编程网 - ifeve.com

时间: 2024-10-24 12:35:50

《Spring Data官方文档》5.3. Connecting to Cassandra with Spring至5.5. Introduction to CassandraTemplate的相关文章

《Spring Data官方文档》翻译邀请

转眼间已经11月了,天气也逐渐变得冷了起来,本月并发网组织大家翻译<Spring Data官方指南>,文章比较简单,欢迎使用过或想了解Sring Data的同学参与翻译. 如何领取 通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节.领取完成之后,建议在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译. 如何提交? 翻译完成之后请登录到并发网提交成待审核状态,会有专门的编辑校对后进行发布.校对完之后被评为A级会升级您为译者,并加入译

《Spring Data 官方文档》6. Cassandra 存储库

6. Cassandra 存储库 6.1. 简介 本章将指出Cassandra所提供的存储库的特色.它基于Spring Data Repositories中所提供的核心存储库, 需要您对这里所说的基本概念有一定的了解. 6.2. 用法 您可以利用我们提供的强大的存储库,来轻松的访问存储在Cassandra中的域实体.为此,只需为您的存储库创建一个接口: TODO 6.3. 查询方法 6.3.1. Repository 删除查询 6.4. 杂项 6.4.1. CDI集成 Spring Data C

Spring Data 官方文档》4.7 Spring Data扩展

4.7 Spring Data扩展 这部分说明Spring Data一系列的扩展功能,可以使Spring Dta使用多样的上下文.目前大部分集成是针对Spring MVC. 4.7.1 Querydsl扩展 Querydsl是一个框架,通过它的流式API构建静态类型的SQL类查询.多个Spring Data模块通过QueryDslPredicateExecutor与Querydsl集成. 例29 QueryDslPredicateExecutor接口 1 public interface Que

《Spring Data 官方文档》5.8. 使用自定义转换器重载默认映射至5.10. 异常解释

5.8. 使用自定义转换器重载默认映射 为了对映射过程有更细粒度的控制,你可以使用'CassandraConverter'实现来注册Spring转换器,例如'MappingCassandraConverter'. "MappingCassandraConverter"检查是否有任何Spring转换器可以在这些特殊类试图映射自身对象之前处理. 为了'hijack' MappingCassandraConverter'的正常映射策略,或许为了提高性能或其他自定义映射需求,您首先需要创建一个

Spring Data 官方文档》Reference Documentation至5.2. Examples Repository

文档结构 参考文档的这一部分讲解Spring Data Cassandra所提供的核心功能. Cassandra 支持 介绍 Cassandra 模块特性设置. Cassandra 资源库 介绍 Cassandra 所支持的资源. 5. Cassandra 支持 Cassandra 包含了非常广泛的特性, 其总结如下 Spring配置支持Cassandra驱动的实例类和副本集使用基于Java的@Configuration类或XML命名空间. CassandraTemplate帮助程序类,可提高执

《Spring Data 官方文档》5.6 保存, 更新, 以及删除数据行

5.6. 保存, 更新, 以及删除数据行 'CassandraTemplate'提供了一种简单的方法来保存,更新和删除域对象,并将这些对象映射到存储在Cassandra中的文档. 5.6.1. 如何在映射层中处理复合主键字段 Cassandra要求您至少具有一个CQL表的分区键字段.或者,您可以有一个或多个Clustering键字段. 当您的CQL表具有复合主键字段时,您必须创建一个@PrimaryKeyClass以定义复合主键的结构. 在这个上下文中,复合主键意味着一个或多个分区列,或1个分区

《Spring Data 官方文档》7. 映射

7. 映射 "CassandraMappingConverter"提供了丰富的映射支持. "CassandraMappingConverter"具有丰富的元数据模型,提供了将域对象映射到CQL表的一套完整的特性功能集合. 使用域对象上的注解来填充映射元数据模型. 然而,基础架构不会强求使用注解作为元数据信息的唯一来源."CassandraMappingConverter"还允许您通过遵循一组公约来将对象映射到文档,而不用提供任何其他元数据. 本章

《Spring Data 官方文档》5.7 查询CQL表

5.7. 查询CQL表 有几种选择和查询的风格,您可以从中选择. 请参阅CassandraTemplate API文档,了解所有可用的重载. 查询表的多行数据,并将结果映射到POJO. String cqlAll = "select * from person"; List<Person> results = cassandraOperations.select(cqlAll, Person.class); for (Person p : results) { LOG.in

《Spring 5官方文档》翻译邀请

公司新的应用已经开始使用Spring 5,所以本月组织大家翻译<Spring 5 官方文档> SINGLE网页版  PDF版本. 如何领取 通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节.领取完成之后,建议在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译.请谨慎领取,并发网是非盈利组织,没办法去跟进每一篇译文的进展,所以很多文章领取了没有翻译,会导致文章长时间没人翻译. 如何提交? 翻译完成之后请登录到并发编程网后台,点击左上