# easy-ioc **Repository Path**: eric-tutorial/easy-ioc ## Basic Information - **Project Name**: easy-ioc - **Description**: 完整的简单IOC容器实现,代码非常少,可以十几分钟看完。来自https://gitee.com/eric-tutorial/java-bible - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://github.com/junicorn/easy-ioc.git - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-09-17 - **Last Updated**: 2022-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy-ioc [IOC容器实现篇](https://github.com/biezhi/jb/blob/master/ioc/index.md) 源码 ![](easyioc代码行数.png) ## 拓展 1. 关于`DI`和`IOC`依赖问题,这个有一个非常著名的问题就是`Spring循环依赖`问题。 解决方案就是Spring内部维护了三个Map(俗称:三级缓存)。这个本质有点类似,两数之和。 在Spring的DefaultSingletonBeanRegistry类中,你会赫然发现类上方挂着这三个Map: * singletonObjects 它是我们最熟悉的朋友,俗称“单例池”“容器”,缓存创建完成单例Bean的地方。 * singletonFactories 映射创建Bean的原始工厂 * earlySingletonObjects 映射Bean的早期引用,也就是说在这个Map里的Bean不是完整的,甚至还不能称之为“Bean”,只是一个Instance. > 后两个Map其实是“垫脚石”级别的,只是创建Bean的时候,用来借助了一下,创建完成就清掉了。 > 参考文档 https://mp.weixin.qq.com/s/tsOrOLxJMRuVCKM6g9rBOA IOC 9. 什么是 Spring IOC 容器? 10. 什么是依赖注入? 11. 可以通过多少种方式完成依赖注入? 12. 区分构造函数注入和 setter 注入。 13. spring 中有多少种 IOC 容器? 14. 区分 BeanFactory 和 ApplicationContext。 15. 列举 IoC 的一些好处。 16. Spring IoC 的实现机制。 # Spring的Bean容器 ConcurrentHashMap ![](spring-ioc.png)