From a821092bbd6c9113ace4fb67e4f2c8a222f64efc Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 25 Mar 2014 09:58:04 +0000 Subject: [PATCH] Log a warning if repository autscan is set to default package Fixes gh-572 --- .../AutoConfigurationPackages.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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 ce7bbbf8f0..6e3398d443 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."); + } } - } /**