一共有五种过滤器,我这边只举两个例子
1.1 自定义组件过滤器
public class Myfilter implements TypeFilter {
@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
ClassMetadata classMetadata = metadataReader.getClassMetadata();
String className = classMetadata.getClassName();
System.out.println(className);
return true;
}
}
配置类这么写
@ComponentScan(value = "com.zx",
excludeFilters = @ComponentScan.Filter(
type = FilterType.CUSTOM,classes = {Myfilter.class}))
@Import(DruidConfig.class)
@Order(2)
public class SpringConfig {
@Bean
public String getName2(){
System.out.println("SpringConfig--------");
return "";
}
}
2.自定义导入器
我们在实际开发中会有很多类需要让spring管理,那么我们一个一个的加会很麻烦,那么有没有一个导入器可以一下子全部加入呢?实际上是有的,但是实际工作中我遇见的很少。这边仅做了解
//这个类得用import导入,直接用注解好像不行
public class MyImportSelector implements ImportSelector {
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
//这边不能带文件名后缀,不然会找不到切记
ResourceBundle resourceBundle = ResourceBundle.getBundle("import");
String className = resourceBundle.getString("className");
return new String[]{className};
}
}
3.自定义注册器
就是讲一下替代ComponentScan功能的类,看如下代码
public class MyImportBeanRegister implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(registry,true);
scanner.scan("com.zx");
}
}
4.bean的初始化过程解析
下面我将这三个都演示一下
4.1 BeanFactoryPostProcessor 4.2 BeanPostProcessor 4.3InitializingBean 5.总结至此springioc 所有的内容都已经介绍完成了,后面会接着介绍aop相关的内容。这边都是比较浅显的理解,深入的话需要花费一定的功夫才行。



