Merge branch '2.0.x'

pull/13707/merge
Stephane Nicoll 6 years ago
commit 8194dc4aea

@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,16 +16,12 @@
package org.springframework.boot.autoconfigure.jdbc;
import java.util.Random;
import javax.sql.DataSource;
import org.junit.After;
import org.junit.Test;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@ -46,129 +42,121 @@ import static org.mockito.Mockito.mock;
*/
public class JdbcTemplateAutoConfigurationTests {
private ConfigurableApplicationContext context;
@After
public void restore() {
if (this.context != null) {
this.context.close();
}
}
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withPropertyValues("spring.datasource.initialization-mode=never",
"spring.datasource.generate-unique-name=true")
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class));
@Test
public void testJdbcTemplateExists() {
load();
assertThat(this.context.getBeansOfType(JdbcOperations.class)).hasSize(1);
JdbcTemplate jdbcTemplate = this.context.getBean(JdbcTemplate.class);
this.contextRunner.run((context) -> {
assertThat(context).hasSingleBean(JdbcOperations.class);
JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate.getDataSource())
.isEqualTo(this.context.getBean(DataSource.class));
.isEqualTo(context.getBean(DataSource.class));
assertThat(jdbcTemplate.getFetchSize()).isEqualTo(-1);
assertThat(jdbcTemplate.getQueryTimeout()).isEqualTo(-1);
assertThat(jdbcTemplate.getMaxRows()).isEqualTo(-1);
});
}
@Test
public void testJdbcTemplateWithCustomProperties() {
load("spring.jdbc.template.fetch-size:100",
this.contextRunner.withPropertyValues("spring.jdbc.template.fetch-size:100",
"spring.jdbc.template.query-timeout:60",
"spring.jdbc.template.max-rows:1000");
JdbcTemplate jdbcTemplate = this.context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate).isNotNull();
"spring.jdbc.template.max-rows:1000").run((context) -> {
assertThat(context).hasSingleBean(JdbcOperations.class);
JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate.getDataSource()).isNotNull();
assertThat(jdbcTemplate.getFetchSize()).isEqualTo(100);
assertThat(jdbcTemplate.getQueryTimeout()).isEqualTo(60);
assertThat(jdbcTemplate.getMaxRows()).isEqualTo(1000);
});
}
@Test
public void testJdbcTemplateExistsWithCustomDataSource() {
load(TestDataSourceConfiguration.class);
assertThat(this.context.getBeansOfType(JdbcOperations.class)).hasSize(1);
JdbcTemplate jdbcTemplate = this.context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate).isNotNull();
this.contextRunner.withUserConfiguration(TestDataSourceConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(JdbcOperations.class);
JdbcTemplate jdbcTemplate = context.getBean(JdbcTemplate.class);
assertThat(jdbcTemplate.getDataSource())
.isEqualTo(this.context.getBean("customDataSource"));
.isEqualTo(context.getBean("customDataSource"));
});
}
@Test
public void testNamedParameterJdbcTemplateExists() {
load();
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.hasSize(1);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = this.context
this.contextRunner.run((context) -> {
assertThat(context).hasSingleBean(NamedParameterJdbcOperations.class);
NamedParameterJdbcTemplate namedParameterJdbcTemplate = context
.getBean(NamedParameterJdbcTemplate.class);
assertThat(namedParameterJdbcTemplate.getJdbcOperations())
.isEqualTo(this.context.getBean(JdbcOperations.class));
.isEqualTo(context.getBean(JdbcOperations.class));
});
}
@Test
public void testMultiDataSource() {
load(MultiDataSourceConfiguration.class);
assertThat(this.context.getBeansOfType(JdbcOperations.class)).isEmpty();
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.isEmpty();
this.contextRunner.withUserConfiguration(MultiDataSourceConfiguration.class)
.run((context) -> {
assertThat(context).doesNotHaveBean(JdbcOperations.class);
assertThat(context)
.doesNotHaveBean(NamedParameterJdbcOperations.class);
});
}
@Test
public void testMultiJdbcTemplate() {
load(MultiJdbcTemplateConfiguration.class);
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.isEmpty();
this.contextRunner.withUserConfiguration(MultiJdbcTemplateConfiguration.class)
.run((context) -> assertThat(context)
.doesNotHaveBean(NamedParameterJdbcOperations.class));
}
@Test
public void testMultiDataSourceUsingPrimary() {
load(MultiDataSourceUsingPrimaryConfiguration.class);
assertThat(this.context.getBeansOfType(JdbcOperations.class)).hasSize(1);
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.hasSize(1);
assertThat(this.context.getBean(JdbcTemplate.class).getDataSource())
.isEqualTo(this.context.getBean("test1DataSource"));
this.contextRunner
.withUserConfiguration(MultiDataSourceUsingPrimaryConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(JdbcOperations.class);
assertThat(context).hasSingleBean(NamedParameterJdbcOperations.class);
assertThat(context.getBean(JdbcTemplate.class).getDataSource())
.isEqualTo(context.getBean("test1DataSource"));
});
}
@Test
public void testMultiJdbcTemplateUsingPrimary() {
load(MultiJdbcTemplateUsingPrimaryConfiguration.class);
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.hasSize(1);
assertThat(this.context.getBean(NamedParameterJdbcTemplate.class)
.getJdbcOperations()).isEqualTo(this.context.getBean("test1Template"));
this.contextRunner
.withUserConfiguration(MultiJdbcTemplateUsingPrimaryConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(NamedParameterJdbcOperations.class);
assertThat(context.getBean(NamedParameterJdbcTemplate.class)
.getJdbcOperations())
.isEqualTo(context.getBean("test1Template"));
});
}
@Test
public void testExistingCustomJdbcTemplate() {
load(CustomConfiguration.class);
assertThat(this.context.getBeansOfType(JdbcOperations.class)).hasSize(1);
assertThat(this.context.getBean(JdbcOperations.class))
.isEqualTo(this.context.getBean("customJdbcOperations"));
this.contextRunner.withUserConfiguration(CustomConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(JdbcOperations.class);
assertThat(context.getBean(JdbcOperations.class))
.isEqualTo(context.getBean("customJdbcOperations"));
});
}
@Test
public void testExistingCustomNamedParameterJdbcTemplate() {
load(CustomConfiguration.class);
assertThat(this.context.getBeansOfType(NamedParameterJdbcOperations.class))
.hasSize(1);
assertThat(this.context.getBean(NamedParameterJdbcOperations.class))
.isEqualTo(this.context.getBean("customNamedParameterJdbcOperations"));
}
public void load(String... environment) {
load(null, environment);
}
public void load(Class<?> config, String... environment) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
TestPropertyValues.of("spring.datasource.initialization-mode:never",
"spring.datasource.url:jdbc:hsqldb:mem:testdb-" + new Random().nextInt())
.applyTo(ctx);
TestPropertyValues.of(environment).applyTo(ctx);
if (config != null) {
ctx.register(config);
}
ctx.register(DataSourceAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class);
ctx.refresh();
this.context = ctx;
this.contextRunner.withUserConfiguration(CustomConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(NamedParameterJdbcOperations.class);
assertThat(context.getBean(NamedParameterJdbcOperations.class))
.isEqualTo(context
.getBean("customNamedParameterJdbcOperations"));
});
}
@Configuration

Loading…
Cancel
Save