将custom datasax.session注入spring数据cassandra

evrscar2  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(497)

是否可以对spring数据使用自定义datastax会话?
嗨,我知道cassandra的spring数据在内部使用datastax会话。不过,我有一个自定义的datastax会话对象(由另一个服务提供),我希望spring数据使用它,而不是预先连接的对象。假设两个datastax会话的版本相同,这可能吗?

lskq00tm

lskq00tm1#

是的,有可能。
根据您的设置,有几种方法。我来解释两种最常见的情况:
直接使用模板api

Session yourSession = …;

CqlTemplate cqlTemplate = new CqlTemplate(yourSession);

CassandraTemplate cassandraTemplate = new CassandraTemplate(yourSession);

将会话公开为 @Bean 由于配置支持希望使用 CassandraSessionFactoryBean 以及 CassandraClusterFactoryBean .
看一看 AbstractCassandraConfiguration 看看有什么支撑豆( CassandraConverter , CassandraMappingContext )配置为配置spring数据的cassandra支持。

@Configuration
class MyCassandraConfig {

    private final Session mySession;

    public MyCassandraConfig(Session mySession) {
        this.mySession = mySession;
    }

    @Bean
    public CassandraConverter cassandraConverter() {

        MappingCassandraConverter mappingCassandraConverter = new MappingCassandraConverter(cassandraMapping());

        mappingCassandraConverter.setCustomConversions(customConversions());

        return mappingCassandraConverter;
    }

    @Bean
    public CassandraMappingContext cassandraMapping() {

        Cluster cluster = mySession.getCluster();
        String keyspace = mySession.getLoggedKeyspace();

        CassandraMappingContext mappingContext = new CassandraMappingContext(
                new SimpleUserTypeResolver(cluster, keyspace), new SimpleTupleTypeFactory(cluster));

        CustomConversions customConversions = customConversions();

        mappingContext.setCustomConversions(customConversions);
        mappingContext.setSimpleTypeHolder(customConversions.getSimpleTypeHolder());

        return mappingContext;
    }

    @Bean
    public CustomConversions customConversions() {
        return new CassandraCustomConversions(Collections.emptyList());
    }

    @Bean
    public CassandraTemplate cassandraTemplate() {
        return new CassandraTemplate(mySession, cassandraConverter());
    }
}

相关问题