diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationPackages.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationPackages.java index ce7bbbf8f07..6e3398d443a 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationPackages.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/AutoConfigurationPackages.java @@ -19,6 +19,8 @@ package org.springframework.boot.autoconfigure; import java.util.Collections; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.BeanDefinition; @@ -29,6 +31,7 @@ import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.ClassUtils; +import org.springframework.util.StringUtils; /** * Class for storing auto-configuration packages for reference later (e.g. by JPA entity @@ -39,6 +42,8 @@ import org.springframework.util.ClassUtils; */ public abstract class AutoConfigurationPackages { + private static Log logger = LogFactory.getLog(AutoConfigurationPackages.class); + private static final String BEAN = AutoConfigurationPackages.class.getName(); /** @@ -76,13 +81,24 @@ public abstract class AutoConfigurationPackages { @Order(Ordered.HIGHEST_PRECEDENCE) static class Registrar implements ImportBeanDefinitionRegistrar { + private static final String NO_SUCH_PACKAGE = "not.scanning.root"; + @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { - set(registry, - ClassUtils.getPackageName(importingClassMetadata.getClassName())); + String packageName = ClassUtils.getPackageName(importingClassMetadata + .getClassName()); + if (StringUtils.hasText(packageName)) { + set(registry, packageName); + logger.info("@EnableAutoConfiguration was declared on a class in the package '" + + packageName + "'. Automatic @Repository scanning is enabled."); + } + else { + set(registry, NO_SUCH_PACKAGE); + logger.warn("@EnableAutoConfiguration was declared on a class in the default package. " + + "Automatic @Repository scanning is not enabled."); + } } - } /**