Alias spring.datasource.name to Hikari's poolName property
Closes gh-9547
This commit is contained in:
@@ -77,7 +77,12 @@ abstract class DataSourceConfiguration {
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "spring.datasource.hikari")
|
||||
public HikariDataSource dataSource(DataSourceProperties properties) {
|
||||
return createDataSource(properties, HikariDataSource.class);
|
||||
HikariDataSource dataSource = createDataSource(properties,
|
||||
HikariDataSource.class);
|
||||
if (properties.getName() != null) {
|
||||
dataSource.setPoolName(properties.getName());
|
||||
}
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public class DataSourceJmxConfigurationTests {
|
||||
throws MalformedObjectNameException {
|
||||
String poolName = UUID.randomUUID().toString();
|
||||
load("spring.datasource.type=" + HikariDataSource.class.getName(),
|
||||
"spring.datasource.hikari.pool-name=" + poolName,
|
||||
"spring.datasource.name=" + poolName,
|
||||
"spring.datasource.hikari.register-mbeans=true");
|
||||
assertThat(this.context.getBeansOfType(HikariDataSource.class)).hasSize(1);
|
||||
assertThat(this.context.getBean(HikariDataSource.class).isRegisterMbeans())
|
||||
@@ -89,7 +89,7 @@ public class DataSourceJmxConfigurationTests {
|
||||
String poolName = UUID.randomUUID().toString();
|
||||
load("spring.datasource.type=" + HikariDataSource.class.getName(),
|
||||
"spring.jmx.enabled=false",
|
||||
"spring.datasource.hikari.pool-name=" + poolName,
|
||||
"spring.datasource.name=" + poolName,
|
||||
"spring.datasource.hikari.register-mbeans=true");
|
||||
assertThat(this.context.getBeansOfType(HikariDataSource.class)).hasSize(1);
|
||||
assertThat(this.context.getBean(HikariDataSource.class).isRegisterMbeans())
|
||||
|
||||
@@ -24,12 +24,8 @@ import com.zaxxer.hikari.HikariDataSource;
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -38,33 +34,31 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* Tests for {@link HikariDataSourceConfiguration}.
|
||||
*
|
||||
* @author Dave Syer
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class HikariDataSourceConfigurationTests {
|
||||
|
||||
private static final String PREFIX = "spring.datasource.hikari.";
|
||||
|
||||
private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
@After
|
||||
public void restore() {
|
||||
public void close() {
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
}
|
||||
EmbeddedDatabaseConnection.override = null;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDataSourceExists() throws Exception {
|
||||
this.context.register(HikariDataSourceConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(DataSource.class)).isNotNull();
|
||||
assertThat(this.context.getBean(HikariDataSource.class)).isNotNull();
|
||||
load();
|
||||
assertThat(this.context.getBeansOfType(DataSource.class)).hasSize(1);
|
||||
assertThat(this.context.getBeansOfType(HikariDataSource.class)).hasSize(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDataSourcePropertiesOverridden() throws Exception {
|
||||
this.context.register(HikariDataSourceConfiguration.class);
|
||||
TestPropertyValues.of(PREFIX + "jdbcUrl:jdbc:foo//bar/spam")
|
||||
.applyTo(this.context);
|
||||
TestPropertyValues.of(PREFIX + "maxLifetime:1234").applyTo(this.context);
|
||||
this.context.refresh();
|
||||
load("spring.datasource.hikari.jdbc-url=jdbc:foo//bar/spam",
|
||||
"spring.datasource.hikari.max-lifetime=1234");
|
||||
HikariDataSource ds = this.context.getBean(HikariDataSource.class);
|
||||
assertThat(ds.getJdbcUrl()).isEqualTo("jdbc:foo//bar/spam");
|
||||
assertThat(ds.getMaxLifetime()).isEqualTo(1234);
|
||||
@@ -73,12 +67,7 @@ public class HikariDataSourceConfigurationTests {
|
||||
|
||||
@Test
|
||||
public void testDataSourceGenericPropertiesOverridden() throws Exception {
|
||||
this.context.register(HikariDataSourceConfiguration.class);
|
||||
TestPropertyValues
|
||||
.of(PREFIX
|
||||
+ "dataSourceProperties.dataSourceClassName:org.h2.JDBCDataSource")
|
||||
.applyTo(this.context);
|
||||
this.context.refresh();
|
||||
load("spring.datasource.hikari.data-source-properties.dataSourceClassName=org.h2.JDBCDataSource");
|
||||
HikariDataSource ds = this.context.getBean(HikariDataSource.class);
|
||||
assertThat(ds.getDataSourceProperties().getProperty("dataSourceClassName"))
|
||||
.isEqualTo("org.h2.JDBCDataSource");
|
||||
@@ -86,12 +75,26 @@ public class HikariDataSourceConfigurationTests {
|
||||
|
||||
@Test
|
||||
public void testDataSourceDefaultsPreserved() throws Exception {
|
||||
this.context.register(HikariDataSourceConfiguration.class);
|
||||
this.context.refresh();
|
||||
load();
|
||||
HikariDataSource ds = this.context.getBean(HikariDataSource.class);
|
||||
assertThat(ds.getMaxLifetime()).isEqualTo(1800000);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nameIsAliasedToPoolName() {
|
||||
load("spring.datasource.name=myDS");
|
||||
HikariDataSource ds = this.context.getBean(HikariDataSource.class);
|
||||
assertThat(ds.getPoolName()).isEqualTo("myDS");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void poolNameTakesPrecedenceOverName() {
|
||||
load("spring.datasource.name=myDS",
|
||||
"spring.datasource.hikari.pool-name=myHikariDS");
|
||||
HikariDataSource ds = this.context.getBean(HikariDataSource.class);
|
||||
assertThat(ds.getPoolName()).isEqualTo("myHikariDS");
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getField(Class<?> target, String name) {
|
||||
Field field = ReflectionUtils.findField(target, name, null);
|
||||
@@ -99,16 +102,15 @@ public class HikariDataSourceConfigurationTests {
|
||||
return (T) ReflectionUtils.getField(field, target);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties
|
||||
protected static class HikariDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "spring.datasource.hikari")
|
||||
public DataSource dataSource() {
|
||||
return DataSourceBuilder.create().type(HikariDataSource.class).build();
|
||||
}
|
||||
|
||||
private void load(String... environment) {
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||
TestPropertyValues.of(environment)
|
||||
.and("spring.datasource.initialize", "false")
|
||||
.and("spring.datasource.type", HikariDataSource.class.getName())
|
||||
.applyTo(ctx);
|
||||
ctx.register(DataSourceAutoConfiguration.class);
|
||||
ctx.refresh();
|
||||
this.context = ctx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user