spring支持注解@Component,@Controller,有此类注解的类会自动注册为一个bean,所有bean在生成之前都由一个BeanDefinition解析而来。
假设如果我们自己来写处理注解的过程
(1)读取项目中的所有类,判断类是否包含指定的注解。
(2)如果包含对应的注解,根据注解生成对应的BeanDefinition。
(3)将生成的BeanDefinition存储起来
spring 也是按照我们上面的操作来进行。
spring中存在ClassPathBeanDefinitionScanner
类和ClassPathScanningCandidateComponentProvider
,用来搜索包含指定注解的类,并生成对应的BeanDefinition(ScannedGenericBeanDefinition
)或者生成BeanDefinitionHolder
一、扫描并解析
spring 将 这一操作放在ClassPathScanningCandidateComponentProvider
的findCandidateComponents</