0
点赞
收藏
分享

微信扫一扫

京东工业商品详情数据接口

IT影子 2023-10-02 阅读 32

目录

Spring注解的解析原理

xml配置组件扫描

注解方式配置组件扫描

原理图

yysy,没有搞太明白,真的复杂,欢迎大佬留言解惑


Spring注解的解析原理

  • 使用@Component等注解配置完毕后,要配置组件扫描才能使注解生效
    • xml配置组件扫描

      • <context:component-scan base-package="com.example"/>
      • 在往期文章中:Spring整合第三方框架_保持敬畏的博客-CSDN博客 ,我们了解同一标签中不同命名空间对应不同的解析器,对于上述中component-scan命名空间对应的解析器
      • ContextNamespaceHandler类
      • ComponentScanBeanDefinitionParser类
        • ​​​​​​​​​​​​​​
        • doScan方法
        • 在该方法中,对于添加了@Component注解及其衍生注解的类,为其创建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,没有搞太明白,真的复杂,欢迎大佬留言解惑

举报

相关推荐

0 条评论