Spring的注解开发-注解原理解析-xml方式/注解方式组件扫描

本文探讨了Spring注解(如@Component)的解析原理,包括XML配置和注解方式的组件扫描过程,重点介绍了ContextNamespaceHandler和ConfigurationClassPostProcessor的作用。解析机制涉及BeanDefinition创建、注册和生命周期管理。尽管两者入口不同,但核心代码解析逻辑相似。
摘要由CSDN通过智能技术生成

目录

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值