diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java index 4a6e1dbdc23e..35bd1f0727d6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java @@ -28,6 +28,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraProperties; +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.autoconfigure.domain.EntityScanPackages; @@ -59,6 +60,7 @@ */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ Cluster.class, CassandraAdminOperations.class }) +@ConditionalOnBean(Cluster.class) @EnableConfigurationProperties(CassandraProperties.class) @AutoConfigureAfter(CassandraAutoConfiguration.class) public class CassandraDataAutoConfiguration { @@ -67,8 +69,8 @@ public class CassandraDataAutoConfiguration { private final Cluster cluster; - public CassandraDataAutoConfiguration(BeanFactory beanFactory, - CassandraProperties properties, Cluster cluster, Environment environment) { + public CassandraDataAutoConfiguration(CassandraProperties properties, + Cluster cluster) { this.properties = properties; this.cluster = cluster; } @@ -107,7 +109,7 @@ public CassandraConverter cassandraConverter(CassandraMappingContext mapping, @Bean @ConditionalOnMissingBean(Session.class) public CassandraSessionFactoryBean cassandraSession(Environment environment, - CassandraConverter converter) throws Exception { + CassandraConverter converter) { CassandraSessionFactoryBean session = new CassandraSessionFactoryBean(); session.setCluster(this.cluster); session.setConverter(converter); @@ -121,7 +123,7 @@ public CassandraSessionFactoryBean cassandraSession(Environment environment, @Bean @ConditionalOnMissingBean public CassandraTemplate cassandraTemplate(Session session, - CassandraConverter converter) throws Exception { + CassandraConverter converter) { return new CassandraTemplate(session, converter); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java index b4687ff896e4..3134c42c996f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java @@ -105,6 +105,15 @@ public void customConversions() { } + @Test + void clusterDoesNotExist() { + AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); + ctx.register(CassandraDataAutoConfiguration.class); + ctx.refresh(); + this.context = ctx; + assertThat(ctx.getBeansOfType(Session.class)).isEmpty(); + } + public void load(Class... config) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); TestPropertyValues.of("spring.data.cassandra.keyspaceName:boot_test")