240 发简信
IP属地:陕西
  • 讲的很好,很清楚

    几个直击灵魂的Spring拷问(七)

    今天这一篇主要想围绕着Spring的循环依赖问题以及终极灵魂拷问如何手写Spring的问题讲讲。 一、Spring循环依赖 1.什么是循环依赖 Spring中的循环依赖一直是...

  • 专门注册了简书账号过来评论这篇文章。
    文章总体写的面面俱到,但是有没有到深入到什么,给人的感觉是我看了,但是貌似很快又会忘掉。为啥?怎么破?

    为啥?没有抓住重点
    怎么破?讲核心

    spring的核心工作原理就是利用反射机制,完成对象定义的注册和实例化。所以这里的重点就是:
    - 在哪里注册对象定义?
    - 如何注册?
    - 完成注册后,咋用?(实例化bean)

    搞清这三个问题,对spring理解就会有更加宏观的把握。

    第一个问题,主要看createApplicationContext。该方法主要解决spring bean去哪里注册问题,也就是解决容器问题。beanFactory是最顶级的容器抽象, DefaultListableBeanFactory是其具体的实现。

    第二个问题, 主要看refreshContext。调用到的AbstractApplicationContext.refresh()里的invokeBeanFactoryPostProcessors(beanFactory)需要重点关注一下,因为它主要完成spring 环境里包括我们代码里定义的bean的定义的注册

    第三个问题,可以给AbstractBeanFactory.doGetBean打个断点,看一下bean的实例化是怎么弄的

    最后,为了检测自己的理解,写几个小demo,包括但不限于以下:
    - 自定义的ApplicationListener
    - 自定义的BeanFactoryPostProcessor
    - 自定义的BeanPostProcessor
    。。。

    就这么多

    Spring Boot 2.x 启动全过程源码分析

    原创: 不羁码农 Java技术栈原文地址: https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247486661&...

  • 专门注册了简书账号过来评论这篇文章。
    文章总体写的面面俱到,但是有没有到深入到什么,给人的感觉是我看了,但是貌似很快又会忘掉。为啥?怎么破?

    为啥?没有抓住重点
    怎么破?讲核心

    spring的核心工作原理就是利用反射机制,完成对象(bean)的注册和实例化。所以这里的重点就是:
    - 在哪里注册对象定义?
    - 如何注册?
    - 如何完后,咋用?(实例化bean)

    搞清这两个问题,对spring理解就会有更加宏观的把握。

    第一个问题,主要看createApplicationContext。该方法主要解决spring bean去哪里注册问题,也就是解决容器问题。beanFactory是最顶级的容器抽象, DefaultListableBeanFactory是其具体的实现。

    第二个问题, 主要看refreshContext。调用到的AbstractApplicationContext.refresh()里的invokeBeanFactoryPostProcessors(beanFactory)需要重点关注一下,因为它主要完成spring 环境里包括我们代码里定义的bean的定义的注册

    第三个问题,可以给AbstractBeanFactory.doGetBean打个断点,看一下bean的实例化是怎么弄的

    最后,为了检测自己的理解,写几个小demo,包括但不限于以下:
    - 自定义的ApplicationListener
    - 自定义的BeanFactoryPostProcessor
    - 自定义的BeanPostProcessor
    。。。

    就这么多

    Spring Boot 启动过程分析

    1. Spring Boot 入口——main方法 从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringAppl...