Skip to content

Commit be07a8a

Browse files
committed
Merge branch 'spring-projectsgh-3943'
2 parents c274162 + bfc0745 commit be07a8a

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

spring-boot/src/main/java/org/springframework/boot/web/servlet/ServletComponentScanRegistrar.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,11 @@ private void updatePostProcessor(BeanDefinitionRegistry registry,
5757
Set<String> packagesToScan) {
5858
BeanDefinition definition = registry.getBeanDefinition(BEAN_NAME);
5959
ValueHolder constructorArguments = definition.getConstructorArgumentValues()
60-
.getGenericArgumentValue(String[].class);
60+
.getGenericArgumentValue(Set.class);
6161
@SuppressWarnings("unchecked")
62-
Set<String> mergedPackages = new LinkedHashSet<String>(
63-
(Set<String>) constructorArguments.getValue());
62+
Set<String> mergedPackages = (Set<String>) constructorArguments.getValue();
6463
mergedPackages.addAll(packagesToScan);
65-
constructorArguments.setValue(packagesToScan);
64+
constructorArguments.setValue(mergedPackages);
6665
}
6766

6867
private void addPostProcessor(BeanDefinitionRegistry registry,

spring-boot/src/test/java/org/springframework/boot/web/servlet/ServletComponentScanRegistrarTests.java

+18
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@ public void packagesConfiguredWithBothValueAndBasePackages() {
8484
.getPackage().getName()));
8585
}
8686

87+
@Test
88+
public void packagesFromMultipleAnnotationsAreMerged() {
89+
this.context = new AnnotationConfigApplicationContext(BasePackages.class,
90+
AdditionalPackages.class);
91+
ServletComponentRegisteringPostProcessor postProcessor = this.context
92+
.getBean(ServletComponentRegisteringPostProcessor.class);
93+
assertThat(
94+
postProcessor.getPackagesToScan(),
95+
containsInAnyOrder("com.example.foo", "com.example.bar",
96+
"com.example.baz"));
97+
}
98+
8799
@Configuration
88100
@ServletComponentScan({ "com.example.foo", "com.example.bar" })
89101
static class ValuePackages {
@@ -96,6 +108,12 @@ static class BasePackages {
96108

97109
}
98110

111+
@Configuration
112+
@ServletComponentScan(basePackages = "com.example.baz")
113+
static class AdditionalPackages {
114+
115+
}
116+
99117
@Configuration
100118
@ServletComponentScan(basePackageClasses = ServletComponentScanRegistrarTests.class)
101119
static class BasePackageClasses {

0 commit comments

Comments
 (0)