- 扫描包的时候排除不想要的bean
- excludeFilters
- 过滤器的type可以是:注解,类型,自定义等
@Configuration
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;
@ComponentScan(value = "com.test.cc",excludeFilters = {@ComponentScan.Filter(type= FilterType.ANNOTATION,classes = {Controller.class})})
public class Config {
}
- 自定义过滤器
- 实现TypeFilter类的match方法(返回true就排除)
- metadataReader可以获得当前被扫描的类的信息和类的注解信息
import org.springframework.core.type.ClassMetadata;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;
import java.io.IOException;
public class MyFilter implements TypeFilter {
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
ClassMetadata classMetadata = metadataReader.getClassMetadata();
String className = classMetadata.getClassName();
if(className.equals("com.test.cc.User")){
return true;
}
return false;
}
}
@ComponentScan(value = "com.test.cc",excludeFilters = {@ComponentScan.Filter(type= FilterType.CUSTOM,classes = {MyFilter.class})})