是否可以对spring数据使用自定义datastax会话?嗨,我知道cassandra的spring数据在内部使用datastax会话。不过,我有一个自定义的datastax会话对象(由另一个服务提供),我希望spring数据使用它,而不是预先连接的对象。假设两个datastax会话的版本相同,这可能吗?
lskq00tm1#
是的,有可能。根据您的设置,有几种方法。我来解释两种最常见的情况:直接使用模板api
Session yourSession = …; CqlTemplate cqlTemplate = new CqlTemplate(yourSession); CassandraTemplate cassandraTemplate = new CassandraTemplate(yourSession);
将会话公开为 @Bean 由于配置支持希望使用 CassandraSessionFactoryBean 以及 CassandraClusterFactoryBean .看一看 AbstractCassandraConfiguration 看看有什么支撑豆( CassandraConverter , CassandraMappingContext )配置为配置spring数据的cassandra支持。
@Bean
CassandraSessionFactoryBean
CassandraClusterFactoryBean
AbstractCassandraConfiguration
CassandraConverter
CassandraMappingContext
@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()); } }
1条答案
按热度按时间lskq00tm1#
是的,有可能。
根据您的设置,有几种方法。我来解释两种最常见的情况:
直接使用模板api
将会话公开为
@Bean
由于配置支持希望使用CassandraSessionFactoryBean
以及CassandraClusterFactoryBean
.看一看
AbstractCassandraConfiguration
看看有什么支撑豆(CassandraConverter
,CassandraMappingContext
)配置为配置spring数据的cassandra支持。