<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>IoC on 知识铺的博客</title>
    <link>https://index.zshipu.com/geek/tags/IoC/</link>
    <description>Recent content in IoC on 知识铺的博客</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 06 Mar 2024 12:17:00 +0000</lastBuildDate>
    <atom:link href="https://index.zshipu.com/geek/tags/IoC/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>循环依赖</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96/</link>
      <pubDate>Wed, 06 Mar 2024 12:17:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96/</guid>
      <description>循环依赖 一个对象依赖对象闭环到自己 A -&amp;gt; B -&amp;gt; &amp;hellip;. -&amp;gt;A tip: 不涉及代理对象问题 解决方法：当一个对象已经实例化完毕了，还未初始化的时候，将它注入到它所依赖的已经实例好的对象（提前暴露对象），使得它所依赖的对象是个完整对象（实例化+初始化），然后再将这个完整对象注入给它。 简单工程（Spring-</description>
    </item>
    <item>
      <title>BeanPostProcessor</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/BeanPostProcessor/</link>
      <pubDate>Wed, 06 Mar 2024 12:16:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/BeanPostProcessor/</guid>
      <description>BeanPostProcessor 源码分析 BeanPostProcessor 接口也叫 Bean 后置处理器，作用是在 Bean 对象实例化和依赖注入完成后，在配置文件 bean 的 init-method(初始化方法)或者 InitializingBean 的 afterPropertiesSet 的前后添加我们自己的处理逻辑。注意是 Bean 实例化完毕后及依赖注入完成后触发的，接口的源码如下。 1 2 3 4 5 6 7 8 9 10 11 12 public interface BeanPostProcessor { /** * 实例化、依赖注入完毕，</description>
    </item>
    <item>
      <title>BeanFactoryPostProcessor</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/BeanFactoryPostProcessor/</link>
      <pubDate>Wed, 06 Mar 2024 12:15:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/BeanFactoryPostProcessor/</guid>
      <description>BeanFactoryBeanPostProcessor 源码分析 BeanFactoryBeanPostProcessor 是当 BeanDefinition 读取完元数据（也就是从任意资源中定义的 bean 数据）后还未实例化之前可以进行修改 抄录并翻译官方的语句 BeanFactoryPostProcessor 操作 bean 的元数据配置. 也就是说,Spring IoC 容器允许 BeanFactoryPostProcessor 读取配置元数据, 并可能在容器实例化除 BeanFactoryPostProcessor 实例之外的任何 bean 之前 更改它 tip: 在 BeanFactoryPostProcessor (例如使用 BeanFactory.getBean()) 中使用这些 bean 的实例虽然在技术上</description>
    </item>
    <item>
      <title>4、依赖注入(DI)</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/4%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5DI/</link>
      <pubDate>Wed, 06 Mar 2024 12:14:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/4%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5DI/</guid>
      <description>前言 前面我们主要分析了 FileSystemXmlApplicationContext 这个具体的 IoC 容器实现类 的初始化源码，在 IoC 容器 中建立了 beanName 到 BeanDefinition 的数据映射，通过一个 ConcurrentHashMap。现在我们来看一下 Spring 是如何将 IoC 容器中存在依赖关系的 bean 根据配置联系在一起的。 Spring 中触发 IoC 容器“依赖注入” 的方式有两种，一个是应用程序通过 getBea</description>
    </item>
    <item>
      <title>3、将BeanDefinition注册进IoC容器</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/3%E5%B0%86BeanDefinition%E6%B3%A8%E5%86%8C%E8%BF%9BIoC%E5%AE%B9%E5%99%A8/</link>
      <pubDate>Wed, 06 Mar 2024 12:13:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/3%E5%B0%86BeanDefinition%E6%B3%A8%E5%86%8C%E8%BF%9BIoC%E5%AE%B9%E5%99%A8/</guid>
      <description>前言 这篇文章分享一下 spring IoC 容器初始化第三部分的代码，也就是将前面解析出来的 BeanDefinition 对象 注册进 IoC 容器，其实就是存入一个 ConcurrentHashMap&amp;lt;String, BeanDefinition&amp;gt; 中。 （PS：可以结合我 GitHub 上对 Spring 框架源码的翻译注释一起看，会更有助于各位同学理解，地址： spring-beans https://github.com/AmyliaY/spring-beans-reading spring-context https://github.com/AmyliaY/spring-context-reading ） 正文 回过头看一下前面在 DefaultBeanDefinitionDocumentReader 中实现的 processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) 方法。 1 2 3 4 5 6 7 8 9 10 11 12 13</description>
    </item>
    <item>
      <title>2、将bean解析封装成BeanDefinition</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/2%E5%B0%86bean%E8%A7%A3%E6%9E%90%E5%B0%81%E8%A3%85%E6%88%90BeanDefinition/</link>
      <pubDate>Wed, 06 Mar 2024 12:12:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/2%E5%B0%86bean%E8%A7%A3%E6%9E%90%E5%B0%81%E8%A3%85%E6%88%90BeanDefinition/</guid>
      <description>前言 接着上一篇的 BeanDefinition 资源定位开始讲。Spring IoC 容器 BeanDefinition 解析过程就是把用户在配置文件中配置的 bean，解析并封装成 IoC 容器可以装载的 BeanDefinition 对象，BeanDefinition 是 Spring 定义的基本数据结构，其中的属性与配置文件中 bean 的属性相对应。 （PS：可以结合我 GitHub 上对 Spring 框架源码的阅读及个人理解一起</description>
    </item>
    <item>
      <title>1、BeanDefinition的资源定位过程</title>
      <link>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/1BeanDefinition%E7%9A%84%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E8%BF%87%E7%A8%8B/</link>
      <pubDate>Wed, 06 Mar 2024 12:11:00 +0000</pubDate>
      <guid>https://index.zshipu.com/geek/post/code/docs/Spring/IoC/1BeanDefinition%E7%9A%84%E8%B5%84%E6%BA%90%E5%AE%9A%E4%BD%8D%E8%BF%87%E7%A8%8B/</guid>
      <description>前言 之前一直想系统的拜读一下 spring 的源码，看看它到底是如何吸引身边的大神们对它的设计赞不绝口，虽然每天工作很忙，每天下班后总感觉脑子内存溢出，想去放松一下，但总是以此为借口，恐怕会一直拖下去。所以每天下班虽然有些疲惫，但还是按住自己啃下这块硬骨头。 spring 源码这种东西真的是一回生二回熟，第</description>
    </item>
  </channel>
</rss>
