diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateProperties.java index 4edd75154f..de2e24293b 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateProperties.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateProperties.java @@ -27,6 +27,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy; import org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy; import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; @@ -34,13 +35,14 @@ import org.springframework.util.StringUtils; * Configuration properties for Hibernate. * * @author Stephane Nicoll - * @author Artsiom Yudovin * @since 2.1.0 * @see JpaProperties */ @ConfigurationProperties("spring.jpa.hibernate") public class HibernateProperties { + private static final String DISABLED_SCANNER_CLASS = "org.hibernate.boot.archive.scan.internal.DisabledScanner"; + private final Naming naming = new Naming(); /** @@ -96,7 +98,7 @@ public class HibernateProperties { HibernateSettings settings) { Map result = new HashMap<>(existing); applyNewIdGeneratorMappings(result); - applyArchiveScanner(result); + applyScanner(result); getNaming().applyNamingStrategies(result); String ddlAuto = determineDdlAuto(existing, settings::getDdlAuto); if (StringUtils.hasText(ddlAuto) && !"none".equals(ddlAuto)) { @@ -123,10 +125,10 @@ public class HibernateProperties { } } - private void applyArchiveScanner(Map result) { - if (!result.containsKey(AvailableSettings.SCANNER)) { - result.put(AvailableSettings.SCANNER, - "org.hibernate.boot.archive.scan.internal.DisabledScanner"); + private void applyScanner(Map result) { + if (!result.containsKey(AvailableSettings.SCANNER) + && ClassUtils.isPresent(DISABLED_SCANNER_CLASS, null)) { + result.put(AvailableSettings.SCANNER, DISABLED_SCANNER_CLASS); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/HibernatePropertiesTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/HibernatePropertiesTests.java index 7dced9f747..1340a3627f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/HibernatePropertiesTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/HibernatePropertiesTests.java @@ -125,7 +125,15 @@ public class HibernatePropertiesTests { } @Test - public void useArchiveScanner() { + public void scannerUsesDisabledScannerByDefault() { + this.contextRunner.run(assertHibernateProperties( + (hibernateProperties) -> assertThat(hibernateProperties).containsEntry( + AvailableSettings.SCANNER, + "org.hibernate.boot.archive.scan.internal.DisabledScanner"))); + } + + @Test + public void scannerCanBeCustomized() { this.contextRunner.withPropertyValues( "spring.jpa.properties.hibernate.archive.scanner:org.hibernate.boot.archive.scan.internal.StandardScanner") .run(assertHibernateProperties((hibernateProperties) -> assertThat( @@ -133,14 +141,6 @@ public class HibernatePropertiesTests { "org.hibernate.boot.archive.scan.internal.StandardScanner"))); } - @Test - public void defaultArchiveScanner() { - this.contextRunner.run(assertHibernateProperties( - (hibernateProperties) -> assertThat(hibernateProperties).containsEntry( - AvailableSettings.SCANNER, - "org.hibernate.boot.archive.scan.internal.DisabledScanner"))); - } - @Test public void defaultDdlAutoIsNotInvokedIfPropertyIsSet() { this.contextRunner.withPropertyValues("spring.jpa.hibernate.ddl-auto=validate")