Spring源码学习笔记

Spring源码学习笔记

IOC

  • Java 对象

    • new Object()
  • spring bean

    • 是一个 java 对象
    • 经历 spring 生命周期
    • 在 spring 容器
  • Java 对象 创建过程

    • javac Object.java -> Object.class
    • main 启动 JVM
    • 遇到 new 关键字时,JVM 加载 class 文件,创建对象放到堆中
  • Spring Bean 创建过程

    • javac Object.java -> Object.class
    • main 启动 JVM
    • spring 扫描需要创建 bean 的 Object
    • 将 Object 类转换成一个 BeanDifinition 对象
      • org.springframework.beans.factory.config.BeanDefinition 是一个接口
      • 常用的实现类是 GenericBeanDefinition
        • AnnotatedGenericBeanDefinition
        • ScannedGenericBeanDefinition
      • RootBeanDefinition
    • 将其保存在 DefaultListableBeanFactory 的 Map<String, BeanDefinition> beanDefinitionMap
    • 校验 BeanDifinition
    • 检查开发者是否对 spring bean 初始化进行拓展,即实现 BeanFactoryPostProcessor 接口;
    • 若存在拓展,则对某些 BeanDifinition 实例进行一些修改
    • 如果是单例且满足其他一些条件,则在 spring 初始化时利用 java 反射创建对象,放到 单例缓存池中 DefaultSingletonBeanRegistry 的 Map<String, Object> singletonObjects
    • CommonAnnotationBeanPostProcessor 处理器处理 @Resource; AutowiredAnnotationBeanPostProcessor 处理器处理 @Autowired 注解;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值