海外 網站 推廣百度一下百度知道
目錄
Spring注解的解析原理
xml配置組件掃描
注解方式配置組件掃描
原理圖
yysy,沒有搞太明白,真的復雜,歡迎大佬留言解惑
Spring注解的解析原理
- 使用@Component等注解配置完畢后,要配置組件掃描才能使注解生效
-
xml配置組件掃描
-
<context:component-scan base-package="com.example"/>
- 在往期文章中:Spring整合第三方框架_保持敬畏的博客-CSDN博客?,我們了解同一標簽中不同命名空間對應不同的解析器,對于上述中component-scan命名空間對應的解析器
-
ContextNamespaceHandler類
-
ComponentScanBeanDefinitionParser類
- ??????????????
- doScan方法
- 在該方法中,對于添加了@Component注解及其衍生注解的類,為其創(chuàng)建BeanDefinition對象放入到BeanDefinitionMap中,然后就是經歷SpringBean的生命周期,最后存入單例池中,被Spring容器管理。xml配置組件掃描該方法沒有使用后處理器
- ??????????????
-
-
注解方式配置組件掃描
-
@ComponentScan({"com.example"}) public class SpringConfig {}
-
這中情況源碼太復雜了,翻不下去了,大概是將BeanDefinitionRegisterPostProcessor注入到容器當中,再調用其中的doScan方法進行BeanDefinition注冊。
-
-
原理圖
- xml方式:通過自定義標簽的方式,通過ComponentScanBeanDefinitionParser解析最終通過調用Scanner的doScan方法進行beanDefiniton注冊
- 注解方式:通過ConfigurationClassPostProcessor最終內部調用Scanner的doScan方法進行beanDefiniton注冊
- 兩種方式入口不同,但是最終核心代碼解析component時代碼是一樣的。
-
yysy,沒有搞太明白,真的復雜,歡迎大佬留言解惑
-