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 d4100bcc350..4edd75154ff 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 @@ -34,6 +34,7 @@ import org.springframework.util.StringUtils; * Configuration properties for Hibernate. * * @author Stephane Nicoll + * @author Artsiom Yudovin * @since 2.1.0 * @see JpaProperties */ @@ -95,6 +96,7 @@ public class HibernateProperties { HibernateSettings settings) { Map result = new HashMap<>(existing); applyNewIdGeneratorMappings(result); + applyArchiveScanner(result); getNaming().applyNamingStrategies(result); String ddlAuto = determineDdlAuto(existing, settings::getDdlAuto); if (StringUtils.hasText(ddlAuto) && !"none".equals(ddlAuto)) { @@ -121,6 +123,13 @@ 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 String determineDdlAuto(Map existing, Supplier defaultDdlAuto) { String ddlAuto = existing.get(AvailableSettings.HBM2DDL_AUTO); 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 869769d7473..7dced9f747a 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 @@ -43,6 +43,7 @@ import static org.mockito.Mockito.verify; * Tests for {@link HibernateProperties}. * * @author Stephane Nicoll + * @author Artsiom Yudovin */ public class HibernatePropertiesTests { @@ -123,6 +124,23 @@ public class HibernatePropertiesTests { "false"))); } + @Test + public void useArchiveScanner() { + this.contextRunner.withPropertyValues( + "spring.jpa.properties.hibernate.archive.scanner:org.hibernate.boot.archive.scan.internal.StandardScanner") + .run(assertHibernateProperties((hibernateProperties) -> assertThat( + hibernateProperties).containsEntry(AvailableSettings.SCANNER, + "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")