Skip to content

Commit ddd0d89

Browse files
committed
Polish
1 parent 083ac67 commit ddd0d89

File tree

4 files changed

+39
-31
lines changed

4 files changed

+39
-31
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -63,8 +63,8 @@ private boolean isAutoConfiguration(MetadataReader metadataReader) {
6363

6464
protected List<String> getAutoConfigurations() {
6565
if (this.autoConfigurations == null) {
66-
this.autoConfigurations = ImportCandidates.load(AutoConfiguration.class, this.beanClassLoader)
67-
.getCandidates();
66+
ImportCandidates importCandidates = ImportCandidates.load(AutoConfiguration.class, this.beanClassLoader);
67+
this.autoConfigurations = importCandidates.getCandidates();
6868
}
6969
return this.autoConfigurations;
7070
}

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@
7676
public class AutoConfigurationImportSelector implements DeferredImportSelector, BeanClassLoaderAware,
7777
ResourceLoaderAware, BeanFactoryAware, EnvironmentAware, Ordered {
7878

79+
static final int ORDER = Ordered.LOWEST_PRECEDENCE - 1;
80+
7981
private static final AutoConfigurationEntry EMPTY_ENTRY = new AutoConfigurationEntry();
8082

8183
private static final String[] NO_IMPORTS = {};
@@ -92,7 +94,7 @@ public class AutoConfigurationImportSelector implements DeferredImportSelector,
9294

9395
private ResourceLoader resourceLoader;
9496

95-
private ConfigurationClassFilter configurationClassFilter;
97+
private volatile ConfigurationClassFilter configurationClassFilter;
9698

9799
@Override
98100
public String[] selectImports(AnnotationMetadata annotationMetadata) {
@@ -177,8 +179,8 @@ protected Class<?> getAnnotationClass() {
177179
* @return a list of candidate configurations
178180
*/
179181
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
180-
List<String> configurations = ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader())
181-
.getCandidates();
182+
ImportCandidates importCandidates = ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader());
183+
List<String> configurations = importCandidates.getCandidates();
182184
Assert.notEmpty(configurations,
183185
"No auto configuration classes found in "
184186
+ "META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you "
@@ -254,14 +256,16 @@ protected List<AutoConfigurationImportFilter> getAutoConfigurationImportFilters(
254256
}
255257

256258
private ConfigurationClassFilter getConfigurationClassFilter() {
257-
if (this.configurationClassFilter == null) {
259+
ConfigurationClassFilter configurationClassFilter = this.configurationClassFilter;
260+
if (configurationClassFilter == null) {
258261
List<AutoConfigurationImportFilter> filters = getAutoConfigurationImportFilters();
259262
for (AutoConfigurationImportFilter filter : filters) {
260263
invokeAwareMethods(filter);
261264
}
262-
this.configurationClassFilter = new ConfigurationClassFilter(this.beanClassLoader, filters);
265+
configurationClassFilter = new ConfigurationClassFilter(this.beanClassLoader, filters);
266+
this.configurationClassFilter = configurationClassFilter;
263267
}
264-
return this.configurationClassFilter;
268+
return configurationClassFilter;
265269
}
266270

267271
protected final <T> List<T> removeDuplicates(List<T> list) {
@@ -344,7 +348,7 @@ protected final ResourceLoader getResourceLoader() {
344348

345349
@Override
346350
public int getOrder() {
347-
return Ordered.LOWEST_PRECEDENCE - 1;
351+
return ORDER;
348352
}
349353

350354
private static class ConfigurationClassFilter {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -39,7 +39,7 @@ public class AutoConfigurations extends Configurations implements Ordered {
3939
private static final AutoConfigurationSorter SORTER = new AutoConfigurationSorter(new SimpleMetadataReaderFactory(),
4040
null);
4141

42-
private static final Ordered ORDER = new AutoConfigurationImportSelector();
42+
private static final int ORDER = AutoConfigurationImportSelector.ORDER;
4343

4444
protected AutoConfigurations(Collection<Class<?>> classes) {
4545
super(classes);
@@ -56,7 +56,7 @@ protected Collection<Class<?>> sort(Collection<Class<?>> classes) {
5656

5757
@Override
5858
public int getOrder() {
59-
return ORDER.getOrder();
59+
return ORDER;
6060
}
6161

6262
@Override

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

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -97,19 +97,19 @@ void setup() {
9797

9898
@Test
9999
void byOrderAnnotation() {
100-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(LOWEST, HIGHEST, DEFAULT));
100+
List<String> actual = getInPriorityOrder(LOWEST, HIGHEST, DEFAULT);
101101
assertThat(actual).containsExactly(HIGHEST, DEFAULT, LOWEST);
102102
}
103103

104104
@Test
105105
void byAutoConfigureAfter() {
106-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A, B, C));
106+
List<String> actual = getInPriorityOrder(A, B, C);
107107
assertThat(actual).containsExactly(C, B, A);
108108
}
109109

110110
@Test
111111
void byAutoConfigureAfterAliasFor() {
112-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A3, B2, C));
112+
List<String> actual = getInPriorityOrder(A3, B2, C);
113113
assertThat(actual).containsExactly(C, B2, A3);
114114
}
115115

@@ -118,19 +118,19 @@ void byAutoConfigureAfterAliasForWithProperties() throws Exception {
118118
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory();
119119
this.autoConfigurationMetadata = getAutoConfigurationMetadata(A3, B2, C);
120120
this.sorter = new AutoConfigurationSorter(readerFactory, this.autoConfigurationMetadata);
121-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A3, B2, C));
121+
List<String> actual = getInPriorityOrder(A3, B2, C);
122122
assertThat(actual).containsExactly(C, B2, A3);
123123
}
124124

125125
@Test
126126
void byAutoConfigureBefore() {
127-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(X, Y, Z));
127+
List<String> actual = getInPriorityOrder(X, Y, Z);
128128
assertThat(actual).containsExactly(Z, Y, X);
129129
}
130130

131131
@Test
132132
void byAutoConfigureBeforeAliasFor() {
133-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(X, Y2, Z2));
133+
List<String> actual = getInPriorityOrder(X, Y2, Z2);
134134
assertThat(actual).containsExactly(Z2, Y2, X);
135135
}
136136

@@ -139,44 +139,44 @@ void byAutoConfigureBeforeAliasForWithProperties() throws Exception {
139139
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory();
140140
this.autoConfigurationMetadata = getAutoConfigurationMetadata(X, Y2, Z2);
141141
this.sorter = new AutoConfigurationSorter(readerFactory, this.autoConfigurationMetadata);
142-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(X, Y2, Z2));
142+
List<String> actual = getInPriorityOrder(X, Y2, Z2);
143143
assertThat(actual).containsExactly(Z2, Y2, X);
144144
}
145145

146146
@Test
147147
void byAutoConfigureAfterDoubles() {
148-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A, B, C, E));
148+
List<String> actual = getInPriorityOrder(A, B, C, E);
149149
assertThat(actual).containsExactly(C, E, B, A);
150150
}
151151

152152
@Test
153153
void byAutoConfigureMixedBeforeAndAfter() {
154-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A, B, C, W, X));
154+
List<String> actual = getInPriorityOrder(A, B, C, W, X);
155155
assertThat(actual).containsExactly(C, W, B, A, X);
156156
}
157157

158158
@Test
159159
void byAutoConfigureMixedBeforeAndAfterWithClassNames() {
160-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A2, B, C, W2, X));
160+
List<String> actual = getInPriorityOrder(A2, B, C, W2, X);
161161
assertThat(actual).containsExactly(C, W2, B, A2, X);
162162
}
163163

164164
@Test
165165
void byAutoConfigureMixedBeforeAndAfterWithDifferentInputOrder() {
166-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(W, X, A, B, C));
166+
List<String> actual = getInPriorityOrder(W, X, A, B, C);
167167
assertThat(actual).containsExactly(C, W, B, A, X);
168168
}
169169

170170
@Test
171171
void byAutoConfigureAfterWithMissing() {
172-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A, B));
172+
List<String> actual = getInPriorityOrder(A, B);
173173
assertThat(actual).containsExactly(B, A);
174174
}
175175

176176
@Test
177177
void byAutoConfigureAfterWithCycle() {
178178
this.sorter = new AutoConfigurationSorter(new CachingMetadataReaderFactory(), this.autoConfigurationMetadata);
179-
assertThatIllegalStateException().isThrownBy(() -> this.sorter.getInPriorityOrder(Arrays.asList(A, B, C, D)))
179+
assertThatIllegalStateException().isThrownBy(() -> getInPriorityOrder(A, B, C, D))
180180
.withMessageContaining("AutoConfigure cycle detected");
181181
}
182182

@@ -185,7 +185,7 @@ void usesAnnotationPropertiesWhenPossible() throws Exception {
185185
MetadataReaderFactory readerFactory = new SkipCycleMetadataReaderFactory();
186186
this.autoConfigurationMetadata = getAutoConfigurationMetadata(A2, B, C, W2, X);
187187
this.sorter = new AutoConfigurationSorter(readerFactory, this.autoConfigurationMetadata);
188-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A2, B, C, W2, X));
188+
List<String> actual = getInPriorityOrder(A2, B, C, W2, X);
189189
assertThat(actual).containsExactly(C, W2, B, A2, X);
190190
}
191191

@@ -194,7 +194,7 @@ void useAnnotationWithNoDirectLink() throws Exception {
194194
MetadataReaderFactory readerFactory = new SkipCycleMetadataReaderFactory();
195195
this.autoConfigurationMetadata = getAutoConfigurationMetadata(A, B, E);
196196
this.sorter = new AutoConfigurationSorter(readerFactory, this.autoConfigurationMetadata);
197-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(A, E));
197+
List<String> actual = getInPriorityOrder(A, E);
198198
assertThat(actual).containsExactly(E, A);
199199
}
200200

@@ -203,7 +203,7 @@ void useAnnotationWithNoDirectLinkAndCycle() throws Exception {
203203
MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory();
204204
this.autoConfigurationMetadata = getAutoConfigurationMetadata(A, B, D);
205205
this.sorter = new AutoConfigurationSorter(readerFactory, this.autoConfigurationMetadata);
206-
assertThatIllegalStateException().isThrownBy(() -> this.sorter.getInPriorityOrder(Arrays.asList(D, B)))
206+
assertThatIllegalStateException().isThrownBy(() -> getInPriorityOrder(D, B))
207207
.withMessageContaining("AutoConfigure cycle detected");
208208
}
209209

@@ -214,10 +214,14 @@ void byBeforeAnnotationThenOrderAnnotation() {
214214
String oa2 = OrderAutoConfigureASeedY2.class.getName();
215215
String oa3 = OrderAutoConfigureASeedA3.class.getName();
216216
String oa4 = OrderAutoConfigureAutoConfigureASeedG4.class.getName();
217-
List<String> actual = this.sorter.getInPriorityOrder(Arrays.asList(oa4, oa3, oa2, oa1, oa));
217+
List<String> actual = getInPriorityOrder(oa4, oa3, oa2, oa1, oa);
218218
assertThat(actual).containsExactly(oa1, oa2, oa3, oa4, oa);
219219
}
220220

221+
private List<String> getInPriorityOrder(String... classNames) {
222+
return this.sorter.getInPriorityOrder(Arrays.asList(classNames));
223+
}
224+
221225
private AutoConfigurationMetadata getAutoConfigurationMetadata(String... classNames) throws Exception {
222226
Properties properties = new Properties();
223227
for (String className : classNames) {

0 commit comments

Comments
 (0)