使用Spring数据创建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操作。因此,到处重复代码会很痛苦。

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

现在注入或自动连线CassandraOperationsbean,任何时候你想要

相关内容

  • 没有找到相关文章

最新更新