1. 程式人生 > >Spring 內部工具 : ClassPathBeanDefinitionScanner -- Bean定義掃描

Spring 內部工具 : ClassPathBeanDefinitionScanner -- Bean定義掃描

ClassPathBeanDefinitionScanner是一個從指定包內掃描所有bean定義的Spring工具。

工作時,它接收一組包的名稱,然後在這些包內掃描所有的類,查詢其中符合條件的bean元件定義並將這些bean元件定義註冊到容器。這些bean定義註冊到容器時具體使用的類為ScannedGenericBeanDefinition,這是Spring bean定義模型介面BeanDefinition的一個具體實現類,針對掃描得到的bean定義。

具體來講,預設情況下,該工具類僅僅關注帶有如下註解的類 :

  • @Component
    • @Repository
    • @Service
    • @Controller
      • @RestController
  • @ManagedBean (Java EE 6)
  • @NamedJSR-330

呼叫者也可以通過新增包含引數includeFilter告訴該工具類考慮應用了其他註解的類。

當然也並不是每個帶有上面註解之一的類就會被認為是符合條件的,該工具類也會考慮呼叫者提供的排除引數excludeFilter

該工具類的典型應用是被ComponentScanAnnotationParser使用。