使用Spring数据创建Cassandra集群连接的最佳方法

时间:2015-11-25 23:35:24

标签: java cassandra spring-data spring-data-cassandra

我使用以下代码使用spring数据连接cassandra。但每次创建连接都很痛苦。

try {
            cluster = Cluster.builder().addContactPoint(host).build();
            session = cluster.connect("digitalfootprint");
            CassandraOperations cassandraOps = new CassandraTemplate(session);
            Select usersQuery = QueryBuilder.select(userColumns).from("Users");
            usersQuery.where(QueryBuilder.eq("username", username));
            List<Users> userResult = cassandraOps
                    .select(usersQuery, Users.class);
            userList = userResult;
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            cluster.close();
        }

我们有什么方法可以拥有常见的静态连接或实用类型的东西。我在Web应用程序中使用它,其中将有大量的CRUD操作。因此,每次重复代码都会很痛苦。

1 个答案:

答案 0 :(得分:1)

只需在spring Web应用程序的启动时实例化适当的bean。一个例子是:

@Configuration
public class CassandraConfig {

    @Bean
    public CassandraClusterFactoryBean cluster() throws UnknownHostException {
        CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
        cluster.setContactPoints(InetAddress.getLocalHost().getHostName());
        cluster.setPort(9042);
        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("mykeyspace");
        session.setConverter(converter());
        session.setSchemaAction(SchemaAction.NONE);

        return session;
    }

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

现在可以随时注入或自动装配 CassandraOperations bean