Spring 工具类 ClassPathBeanDefinitionScanner 组件Bean定义扫描
ClassPathBeanDefinitionScanner是一个从指定包内扫描所有bean定义的Spring工具。工作时,它接收一组包的名称,然后在这些包内扫描所有的类,查找其中符合条件的bean组件定义并将这些bean组件定义注册到容器。这些bean定义注册到容器时具体使用的类为ScannedGenericBeanDefinition,这是Spring bean定义模型接口BeanDefin.
ClassPathBeanDefinitionScanner
是一个从指定包内扫描所有组件bean
定义的Spring
工具。
工作时,它接收一组包的名称,然后在这些包内扫描所有的类,查找其中符合条件的bean
组件定义并将这些bean
组件定义注册到容器。这些bean
定义注册到容器时具体使用的类为ScannedGenericBeanDefinition
,这是Spring
bean
定义模型接口BeanDefinition
的一个具体实现类,针对扫描得到的bean
定义。
具体来讲,缺省情况下,该工具类仅仅关注带有如下注解的类 :
@Component
@Repository
@Service
@Controller
@RestController
@ManagedBean
(Java EE 6
)@Named
(JSR-330
)
调用者也可以通过添加包含参数includeFilter
告诉该工具类考虑应用了其他注解的类。
当然也并不是每个带有上面注解之一的类就会被认为是符合条件的,该工具类也会考虑调用者提供的排除参数excludeFilter
。
该工具类的典型应用是被
ComponentScanAnnotationParser
使用。
ClassPathBeanDefinitionScanner
继承自ClassPathScanningCandidateComponentProvider
,实际上使用哪些过滤器,以及扫描目标组件的逻辑,主要实现在ClassPathScanningCandidateComponentProvider
,不过ClassPathScanningCandidateComponentProvider
是从一个包中扫描组件,而ClassPathBeanDefinitionScanner
在此基础上做了增强,从而具备从多个包中扫描目标组件的能力。
相关文章
更多推荐
所有评论(0)