Skip to content

Commit cc5bd51

Browse files
Alan-Gomeswilkinsona
authored andcommitted
Configure FluentConfiguration to use ResourceLoader's ClassLoader
See gh-16947
1 parent 898b791 commit cc5bd51

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public Flyway flyway(FlywayProperties properties,
113113
ObjectProvider<FlywayConfigurationCustomizer> fluentConfigurationCustomizers,
114114
ObjectProvider<Callback> callbacks,
115115
ObjectProvider<FlywayCallback> flywayCallbacks) {
116-
FluentConfiguration configuration = new FluentConfiguration();
116+
FluentConfiguration configuration = new FluentConfiguration(resourceLoader.getClassLoader());
117117
DataSource dataSourceToMigrate = configureDataSource(configuration,
118118
properties, dataSourceProperties, flywayDataSource.getIfAvailable(),
119119
dataSource.getIfAvailable());

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.junit.jupiter.api.Test;
3737
import org.mockito.InOrder;
3838

39+
import org.mockito.internal.util.MockUtil;
3940
import org.springframework.beans.factory.BeanCreationException;
4041
import org.springframework.boot.autoconfigure.AutoConfigurations;
4142
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
@@ -48,11 +49,14 @@
4849
import org.springframework.context.annotation.Primary;
4950
import org.springframework.core.Ordered;
5051
import org.springframework.core.annotation.Order;
52+
import org.springframework.core.io.DefaultResourceLoader;
53+
import org.springframework.core.io.ResourceLoader;
5154
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
5255
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
5356
import org.springframework.stereotype.Component;
5457

5558
import static org.assertj.core.api.Assertions.assertThat;
59+
import static org.junit.jupiter.api.Assertions.assertTrue;
5660
import static org.mockito.ArgumentMatchers.any;
5761
import static org.mockito.BDDMockito.given;
5862
import static org.mockito.Mockito.inOrder;
@@ -470,6 +474,16 @@ public void undoSqlMigrationPrefix() {
470474
});
471475
}
472476

477+
@Test
478+
public void customFlywayClassLoader() {
479+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class,
480+
ResourceLoaderConfiguration.class).run((context) -> {
481+
assertThat(context).hasSingleBean(Flyway.class);
482+
Flyway flyway = context.getBean(Flyway.class);
483+
assertTrue(MockUtil.isMock(flyway.getConfiguration().getClassLoader()));
484+
});
485+
}
486+
473487
@Configuration(proxyBeanMethods = false)
474488
protected static class FlywayDataSourceConfiguration {
475489

@@ -489,6 +503,17 @@ public DataSource flywayDataSource() {
489503

490504
}
491505

506+
@Configuration(proxyBeanMethods = false)
507+
protected static class ResourceLoaderConfiguration {
508+
509+
@Bean
510+
@Primary
511+
public ResourceLoader customClassLoader() {
512+
return new DefaultResourceLoader(mock(ClassLoader.class));
513+
}
514+
515+
}
516+
492517
@Configuration(proxyBeanMethods = false)
493518
protected static class CustomFlywayMigrationInitializer {
494519

0 commit comments

Comments
 (0)