package com.aggrepoint.dao.spring.boot; import java.util.List; import java.util.stream.Collectors; import org.springframework.beans.BeansException; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.aggrepoint.dao.DaoScannerConfigurer; @Configuration @ConditionalOnMissingBean(DaoScannerConfigurer.class) public class DaoScanAutoConfiguration implements ApplicationContextAware { ApplicationContext context; @Bean public DaoScannerConfigurer getScannerConfigurer() { // Try to use @EnableAutoConfiguration base packages List<String> basePackages = null; try { basePackages = AutoConfigurationPackages.get(context); } catch (Exception e) { } if (basePackages == null || basePackages.size() == 0) return null; DaoScannerConfigurer cfg = new DaoScannerConfigurer(); cfg.setBasePackage(basePackages.stream().collect( Collectors.joining(","))); return cfg; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } }