Commit c8105413 authored by Dmytro Nosan's avatar Dmytro Nosan Committed by Stephane Nicoll

Fix scope of CqlSessionBuilder bean

See gh-19899
parent 2a01c026
...@@ -44,6 +44,7 @@ import org.springframework.boot.context.properties.PropertyMapper; ...@@ -44,6 +44,7 @@ import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for Cassandra. * {@link EnableAutoConfiguration Auto-configuration} for Cassandra.
...@@ -69,6 +70,7 @@ public class CassandraAutoConfiguration { ...@@ -69,6 +70,7 @@ public class CassandraAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@Scope("prototype")
public CqlSessionBuilder cassandraSessionBuilder(CassandraProperties properties, public CqlSessionBuilder cassandraSessionBuilder(CassandraProperties properties,
DriverConfigLoader driverConfigLoader, ObjectProvider<CqlSessionBuilderCustomizer> builderCustomizers) { DriverConfigLoader driverConfigLoader, ObjectProvider<CqlSessionBuilderCustomizer> builderCustomizers) {
CqlSessionBuilder builder = CqlSession.builder().withConfigLoader(driverConfigLoader); CqlSessionBuilder builder = CqlSession.builder().withConfigLoader(driverConfigLoader);
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
package org.springframework.boot.autoconfigure.cassandra; package org.springframework.boot.autoconfigure.cassandra;
import com.datastax.oss.driver.api.core.CqlIdentifier;
import com.datastax.oss.driver.api.core.CqlSessionBuilder;
import com.datastax.oss.driver.api.core.config.DefaultDriverOption; import com.datastax.oss.driver.api.core.config.DefaultDriverOption;
import com.datastax.oss.driver.api.core.config.DriverConfigLoader; import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
import com.datastax.oss.driver.api.core.config.DriverExecutionProfile; import com.datastax.oss.driver.api.core.config.DriverExecutionProfile;
...@@ -42,6 +44,17 @@ class CassandraAutoConfigurationTests { ...@@ -42,6 +44,17 @@ class CassandraAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(CassandraAutoConfiguration.class)); .withConfiguration(AutoConfigurations.of(CassandraAutoConfiguration.class));
@Test
void cqlSessionBuilderThreadSafe() {
this.contextRunner.run((context) -> {
CqlIdentifier keyspace = CqlIdentifier.fromCql("test");
assertThat(context).hasSingleBean(CqlSessionBuilder.class);
assertThat(context.getBean(CqlSessionBuilder.class).withKeyspace(keyspace))
.hasFieldOrPropertyWithValue("keyspace", keyspace);
assertThat(context.getBean(CqlSessionBuilder.class)).hasFieldOrPropertyWithValue("keyspace", null);
});
}
@Test @Test
void driverConfigLoaderWithDefaultConfiguration() { void driverConfigLoaderWithDefaultConfiguration() {
this.contextRunner.run((context) -> { this.contextRunner.run((context) -> {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment