自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小航

公众号:『 程序员小航 』

  • 博客(11)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring 源码学习 11:invokeBeanFactoryPostProcessors

前言invokeBeanFactoryPostProcessors 会执行 BeanFactory 的后置处理器。看到这里会有疑问:什么是 BeanFactoryPostProcessor ?BeanfactoryPostProcessor 该如何使用?知道了上面两个问题的答案,对 BeanFactoryPostProcessor 有了了解之后,然后再深入源码,继续阅读 invokeBeanFactoryPostProcessors 这个方法。作用资料还是在官网可以找到答案:阅读了一下,

2020-12-28 23:18:53 403

原创 Spring 源码学习 10:prepareBeanFactory 和 postProcessBeanFactory

前言根据 refresh 流程,当 obtainFreshBeanFactory 执行结束后,下一步会执行 prepareBeanFactory ,顾名思义,这个方法主要是准备 BeanFactory,下面一起看一看这部分逻辑。prepareBeanFactoryprotected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) { // Tell the internal bean factory to

2020-12-27 19:01:56 201

原创 Spring 源码学习 09:refresh 大概流程

前言前面的准备工作结束之后,就是进入核心代码 refresh。源码public void refresh() throws BeansException, IllegalStateException { // 加锁 synchronized (this.startupShutdownMonitor) { StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh")

2020-12-23 12:06:42 173

原创 IDEA 文档插件 DocView 版本更新:修改 UI 并支持 IDEA 2020.3 !

前言近期工作开始忙起来,各种忙,连阅读 Spring 源码都暂停了,Doc View 也暂时搁置计划,虽然想有很多功能,但是总是要慢慢来的。也有几个小伙伴在 github 提了 Issues:希望支持 IDEA 2020.3也有 bug 反馈说参数列表显示不全当然就只有两个 Issues …… 也是没几个人用的原因。下面看一下这次更新的内容还有一些计划及问题:更新内容更新 UI新版的 UI老版的 UI具体哪个比较合适就需要小伙伴们评价了通过新版 UI 可以看出未来

2020-12-16 14:58:53 733

原创 Spring 源码学习 08:register 注册配置类

前言看完无参构造的源码及流程之后,后面将会执行 register 方法。register 方法,入参是我们的配置类 JavaConfig.class ,下面跟着源码继续往下走!源码分析this.reader.register(componentClasses);这里执行的是 reader 的方法,入参就是传入的 JavaConfig.class。reader 在之前初始化,就是注册一些 PostProcessor。循环,注册所有的配置类;doRegisterBean 开始注册。

2020-12-07 11:31:09 338

原创 Spring 源码学习 07:ClassPathBeanDefinitionScanner

前言AnnotationConfigApplicationContext 构造函数除了初始化一个 reader ,还有一个 scanner,下面来一起看看 ClassPathBeanDefinitionScanner 都有什么逻辑。源码分析this.scanner = new ClassPathBeanDefinitionScanner(this); 代码如下所示:其中 useDefaultFilters 默认设置的 true。所以最终会执行下面三部分代码:registerDefaultFi

2020-12-06 11:02:50 462

原创 Spring 源码学习 06:AnnotatedBeanDefinitionReader

前言BeanDefinition 的概念也了解了,也知道一个 Bean 在 Spring 中定义的信息有哪些之后,继续言归正传。源码分析在初始化时会先生成一个 reader ,进入方法,其实是走的下面的逻辑:其中 getOrCreateEnvironment(registry) 会返回一个 Environment 用来表示当前的运行环境之类的。ConditionEvaluator 是用来完成对 @Conditional 这个条件注解的判断。这块可以参考官网:Environment Abstr

2020-12-05 13:41:31 303

原创 Spring 源码学习 05:BeanDefinition 概念及其实现

前言BeanDefinition:顾名思义,就是 Bean 的定义,是用来描述一个 Bean 都有什么信息。前面说在初始化 DefaultListableBeanFactory 时,会初始化一个 Map<String, BeanDefinition>,这个 Map 的功能暂且不说,(PS:查资料说的是存储 bean),所以今天就结合官方文档以及源码,一起了解一下 BeanDefinition!概念在容器内部,使用 BeanDefinition 对象定义一个 Bean。而定义的信息包含 类

2020-12-04 10:08:34 328

原创 Spring 源码学习 04:初始化容器与 DefaultListableBeanFactory

前言在前一篇文章:创建 IoC 容器的几种方式中,介绍了四种方式,这里以 AnnotationConfigApplicationContext 为例,跟进代码,看看 IoC 的启动流程。入口从 JavaConfig 中加载配置的 AnnotationConfigApplicationContext 启动方式如下:进去之后发现构造其实是调用的当前无参构造。所以在启动时也可以直接声明无参构造,改写为下面这种:public class AnnotationConfigApplicationTes

2020-12-03 08:32:43 269

原创 Spring 源码学习 03:创建 IoC 容器的几种方式

前言在上一篇文章末尾画了一幅简图,现在从简图这入手,先来看看如何创建容器!创建容器在搭建 Spring 源码阅读环境 时,最后举了一个例子,其实就是创建容器,并从容器中获取 Bean ,来测试环境是否 OK。根据元数据的不同,创建容器的方式也不同,下面参考官方文档,简单介绍下创建容器的几种方式:Java 配置获取元数据public class AnnotationConfigApplicationTest { public static void main(String[] args)

2020-12-02 08:31:28 545

原创 Spring 源码学习 02:关于 Spring IoC 和 Bean 的概念

前言在前一篇文章中介绍了如何构建源码阅读环境,既然构建好了源码环境,本地也可以正常运行,那就开始阅读源码吧!在阅读源码时,会参考官方文档,很多概念在官网都可以得到答案,有兴趣的小伙伴们可以继续阅读,当做复习,写的不足之处,希望多多指导。IoC 和 DIIoCIoC(Inversion of Control),即控制反转。之前是在对象内部 new 创建其他对象,然后使用。而现在 Spring 中有一个容器可以在创建管理这些对象,并且将对象依赖的其他对象注入到这个对象中,这些对象的创建、销毁都由

2020-12-01 12:16:19 158

IDEA输入法不跟随

搜狗输入法, IDEA, 输入框不跟随, 将文件下载, 解压, 并替换IDEA安装目录的 jre64即可. 替换前请注意备份原jre64.

2018-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除