上一篇:4-Spring源码解析之this()(1)——AnnotatedBeanDefinitionReader
上一篇我们讲到
private final AnnotatedBeanDefinitionReader reader;
private final ClassPathBeanDefinitionScanner scanner;
public AnnotationConfigApplicationContext() {
// 步骤1:获取Spring7个内置处理器
this.reader = new AnnotatedBeanDefinitionReader(this);
// 步骤2:获取Spring的类扫描器Component
this.scanner = new ClassPathBeanDefinitionScanner(this);
}
我们将this.reader = new AnnotatedBeanDefinitionReader(this);
分析完后,reader
得到了Spring的7个内置后置处理器。
那么下面,我们来分析第二步,获取Spring的类扫描器。我们进入ClassPathBeanDefinitionScanner
类的构造器中。
1. ClassPathBeanDefinitionScanner
类构造器
ClassPathBeanDefinitionScanner
是一个从指定包内扫描所有Bean
的Spring工具类。它在给定的包中进行扫描,找到其中标有注解且符合过滤规则的类,然后将这些类定义拿到将其注册到Spring容器中得到Bean
组件。
在缺省的情况下,ClassPathBeanDefinitionScanner
类只注册带有下面几个注解的类。
@Component
@Repository
@Service
@Controller
@RestController
@ManagedBean(Java EE 6)
@Named(JSR-330)
public ClassPathBeanDefinitionScanner