org.zalando.boot.cassandra.autoconfig.CassandraSessionAutoConfiguration Maven / Gradle / Ivy
package org.zalando.boot.cassandra.autoconfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import org.zalando.boot.cassandra.CassandraSessionFactoryBean;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
import com.datastax.driver.mapping.MappingManager;
/**
*
*/
@Configuration
@ConditionalOnBean(Cluster.class)
@ConditionalOnMissingBean(Session.class)
@EnableConfigurationProperties(CassandraPropertiesExt.class)
public class CassandraSessionAutoConfiguration {
@Autowired
private CassandraPropertiesExt properties;
@Autowired
private Cluster cluster;
@Bean
public CassandraSessionFactoryBean session() {
CassandraSessionFactoryBean factory = new CassandraSessionFactoryBean();
factory.setCluster(cluster);
if (StringUtils.hasText(properties.getKeyspaceName())) {
factory.setKeyspace(properties.getKeyspaceName());
}
return factory;
}
@Bean
@ConditionalOnClass(MappingManager.class)
public MappingManager mappingManager(Session session) {
return new MappingManager(session);
}
}