package com.common.configure;
|
|
import com.common.core.utils.KitClassUtils;
|
import lombok.Data;
|
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;
|
import org.springframework.core.env.Environment;
|
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.core.type.filter.AnnotationTypeFilter;
|
import org.springframework.lang.Nullable;
|
import java.lang.annotation.Annotation;
|
import java.util.Arrays;
|
import java.util.Set;
|
|
|
/**
|
* @author 廖振钦
|
*/
|
@Data
|
public class ClassPathTableScanner extends ClassPathBeanDefinitionScanner {
|
|
private Class<? extends Annotation> annotationClass;
|
|
public ClassPathTableScanner(BeanDefinitionRegistry registry) {
|
super(registry);
|
}
|
|
public ClassPathTableScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters) {
|
super(registry, useDefaultFilters);
|
}
|
|
public ClassPathTableScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters, Environment environment) {
|
super(registry, useDefaultFilters, environment);
|
}
|
|
public ClassPathTableScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters, Environment environment, @Nullable ResourceLoader resourceLoader) {
|
super(registry, useDefaultFilters, environment, resourceLoader);
|
}
|
|
public void registerFilters() {
|
if (this.annotationClass != null) {
|
addIncludeFilter(new AnnotationTypeFilter(this.annotationClass));
|
}
|
|
}
|
|
@Override
|
public Set<BeanDefinitionHolder> doScan(String... basePackages) {
|
Set<BeanDefinitionHolder> beanDefinitions = super.doScan(basePackages);
|
|
beanDefinitions.forEach(beanDefinition->{
|
String beanclassname = beanDefinition.getBeanDefinition().getBeanClassName();
|
try {
|
Class onwClass = Class.forName(beanclassname);
|
KitClassUtils.tableclass.add(onwClass);
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
});
|
|
if (beanDefinitions.isEmpty()) {
|
logger.warn("没有找到 '" + Arrays.toString(basePackages) + "'包,请检查你的配置.");
|
}
|
|
return beanDefinitions;
|
}
|
}
|