在Configuration類上我們一般會加上
@MapperScan(basePackages = "com.hunqingplatform.hunqing.dao.mapper1.ext",sqlSessionFactoryRef="sqlSessionFactory")這樣的註解,點進該註解你會看到該註解又被@Import註解給註解了
@Import註解是往spring容器中導入一些bean實例的,作用和在類上加上@Componet註解差不多,這裏向spring容器里加入了
MapperScannerRegistrar類。從名字就可以猜得到它是向spring裏掃描註冊mapper的。點進該類查看源碼。發現該類實現了ImportBeanDefinitionRegistrar接口,看jdk doc說該接口的作用是註冊額外的BeanDefinition在處理Configuration類的時候。在實現方法registerBeanDefinitions體內,new了一個ClassPathMapperScanner類用來掃描讀取mapper接口,而ClassPathMapperScanner又繼承ClassPathBeanDefinitionScanner實際是委託它的父類來掃描獲取mapper的BeanDefinition。到這mapper的BeanDefiniton加載就暫時告一段落。