Browse Source

Polish "Support comma-separated basePackage values in EntityScan"

See gh-27355
pull/27405/head
Madhura Bhave 5 years ago
parent
commit
7bae960d78
  1. 6
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/domain/EntityScanPackages.java
  2. 5
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/domain/EntityScannerTests.java

6
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/domain/EntityScanPackages.java

@ -148,7 +148,7 @@ public class EntityScanPackages { @@ -148,7 +148,7 @@ public class EntityScanPackages {
Collections.addAll(packagesToScan, tokenized);
}
for (Class<?> basePackageClass : attributes.getClassArray("basePackageClasses")) {
addResolvedPackage(ClassUtils.getPackageName(basePackageClass), packagesToScan);
packagesToScan.add(this.environment.resolvePlaceholders(ClassUtils.getPackageName(basePackageClass)));
}
if (packagesToScan.isEmpty()) {
String packageName = ClassUtils.getPackageName(metadata.getClassName());
@ -158,10 +158,6 @@ public class EntityScanPackages { @@ -158,10 +158,6 @@ public class EntityScanPackages {
return packagesToScan;
}
private void addResolvedPackage(String packageName, Set<String> packagesToScan) {
packagesToScan.add(this.environment.resolvePlaceholders(packageName));
}
}
static class EntityScanPackagesBeanDefinition extends GenericBeanDefinition {

5
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/domain/EntityScannerTests.java

@ -25,7 +25,6 @@ import javax.persistence.Entity; @@ -25,7 +25,6 @@ import javax.persistence.Entity;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.boot.autoconfigure.data.jpa.city.City;
import org.springframework.boot.autoconfigure.domain.scan.a.EmbeddableA;
import org.springframework.boot.autoconfigure.domain.scan.a.EntityA;
import org.springframework.boot.autoconfigure.domain.scan.b.EmbeddableB;
@ -124,13 +123,13 @@ class EntityScannerTests { @@ -124,13 +123,13 @@ class EntityScannerTests {
void scanShouldScanCommaSeparatedPackagesInPlaceholderPackage() throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
TestPropertyValues.of(
"com.example.entity-package=org.springframework.boot.autoconfigure.domain.scan,org.springframework.boot.autoconfigure.data.jpa.city")
"com.example.entity-package=org.springframework.boot.autoconfigure.domain.scan.a,org.springframework.boot.autoconfigure.domain.scan.b")
.applyTo(context);
context.register(ScanPlaceholderConfig.class);
context.refresh();
EntityScanner scanner = new EntityScanner(context);
Set<Class<?>> scanned = scanner.scan(Entity.class);
assertThat(scanned).containsOnly(EntityA.class, EntityB.class, EntityC.class, City.class);
assertThat(scanned).containsOnly(EntityA.class, EntityB.class);
context.close();
}

Loading…
Cancel
Save