Skip to content

Commit b9cfe21

Browse files
committed
Make @ImportAutoConfiguration not register package
Update `@ImportAutoConfiguration` so that it is no longer annotated with `@AutoConfigurationPackage` and as such isn't a marker for `AutoConfigurationPackages`. Having `@ImportAutoConfiguration` marked as an auto-configuration package is particularly problematic in tests since it frequently breaks context caching. Fixes gh-9282
1 parent 2775beb commit b9cfe21

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfiguration.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
@Retention(RetentionPolicy.RUNTIME)
4747
@Documented
4848
@Inherited
49-
@AutoConfigurationPackage
5049
@Import(ImportAutoConfigurationImportSelector.class)
5150
public @interface ImportAutoConfiguration {
5251

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelectorTests.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.springframework.core.io.DefaultResourceLoader;
3838
import org.springframework.core.type.AnnotationMetadata;
3939
import org.springframework.core.type.classreading.SimpleMetadataReaderFactory;
40+
import org.springframework.util.ClassUtils;
4041

4142
import static org.assertj.core.api.Assertions.assertThat;
4243
import static org.mockito.Mockito.verifyZeroInteractions;
@@ -125,7 +126,6 @@ public void exclusionsWithoutImport() throws Exception {
125126
public void exclusionsAliasesAreApplied() throws Exception {
126127
AnnotationMetadata annotationMetadata = getAnnotationMetadata(
127128
ImportWithSelfAnnotatingAnnotationExclude.class);
128-
129129
String[] imports = this.importSelector.selectImports(annotationMetadata);
130130
assertThat(imports).isEmpty();
131131
}
@@ -182,6 +182,19 @@ public void determineImportsWhenUsingMetaDifferentExcludeWithoutClassesShouldBeD
182182
assertThat(set1).isNotEqualTo(set2);
183183
}
184184

185+
@Test
186+
public void determineImportsShouldNotSetPackageImport() throws Exception {
187+
Class<?> packageImportClass = ClassUtils.resolveClassName(
188+
"org.springframework.boot.autoconfigure.AutoConfigurationPackages.PackageImport",
189+
null);
190+
Set<Object> selectedImports = this.importSelector
191+
.determineImports(getAnnotationMetadata(
192+
ImportMetaAutoConfigurationExcludeWithUnrelatedOne.class));
193+
for (Object selectedImport : selectedImports) {
194+
assertThat(selectedImport).isNotInstanceOf(packageImportClass);
195+
}
196+
}
197+
185198
private AnnotationMetadata getAnnotationMetadata(Class<?> source) throws IOException {
186199
return new SimpleMetadataReaderFactory().getMetadataReader(source.getName())
187200
.getAnnotationMetadata();

spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/cache/ImportsContextCustomizerFactoryWithAutoConfigurationTests.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.junit.runners.model.InitializationError;
2525

2626
import org.springframework.beans.factory.annotation.Autowired;
27+
import org.springframework.boot.autoconfigure.AutoConfigurationPackage;
2728
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
2829
import org.springframework.boot.autoconfigure.domain.EntityScan;
2930
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
@@ -94,8 +95,8 @@ public void test() {
9495

9596
}
9697

97-
@ContextConfiguration(classes = EmptyConfig.class)
9898
@DataJpaTest
99+
@ContextConfiguration(classes = EmptyConfig.class)
99100
@Unrelated2
100101
public static class DataJpaTest2 {
101102

@@ -109,8 +110,8 @@ public void test() {
109110

110111
}
111112

112-
@ContextConfiguration(classes = EmptyConfig.class)
113113
@DataJpaTest
114+
@ContextConfiguration(classes = EmptyConfig.class)
114115
@Unrelated1
115116
public static class DataJpaTest3 {
116117

@@ -124,8 +125,8 @@ public void test() {
124125

125126
}
126127

127-
@ContextConfiguration(classes = EmptyConfig.class)
128128
@DataJpaTest(showSql = false)
129+
@ContextConfiguration(classes = EmptyConfig.class)
129130
@Unrelated1
130131
public static class DataJpaTest4 {
131132

@@ -151,6 +152,7 @@ public void test() {
151152

152153
@Configuration
153154
@EntityScan(basePackageClasses = ExampleEntity.class)
155+
@AutoConfigurationPackage
154156
static class EmptyConfig {
155157

156158
}

0 commit comments

Comments
 (0)