前言、申明、叠甲
- 先说重点:完成版的代码Git地址:https://gitee.com/kkk3582/ioc.git,随后会按文章进度重写一遍,并按目录打上Tag,具体的git代码随文章进度实时更新。
- IOC是一种设计思想,并不是特定的指Spring IOC。
- 本系列中讲述的与Spring IOC的实现没有太大关系。
- 包括我实现的一套简易的IOC代码,与Spring IOC也没有多大的关系,差不多就是:如有雷同 纯属巧合(当然 Service,AutoWired,Value等注解,沿用了Spring的> 命名)
- 为了不受Spring IOC的设计源码影响,我再完成自己的IOC容器之前,没有区看过一行Spring IOC的代码(当然,也可能是我懒)
不去看Spring IOC源码的原因,就好比,看电影前不想被剧透一个道理。自己去思考,设计也是一种乐趣(虽然设计出来的代码可能是一坨屎山,大部分情况也确实> 是一坨屎山)。 - 写代码就是为了乐趣。
- 最后再叠一层甲,我本次写的IOC框架代码就是一坨屎山,毫无使用价值,为的就是尝试理解下IOC的实现思路。
本系列的计划(或者说目录)
- IOC简介
- 个人对IOC的理解
- 自己动手从零开始写一个IOC框架
- 扫包,Class收集和预处理
- 目标注解解析
- @Service
- @AutoWired
- @Configuration
- @Value
- Bean构建
- 单利和多例
- 循环引用问题(使用两次遍历来解决)
- Bean Actions
- AfterContextInit: 容器初始化完成后的执行器
- PostBean: Bean初始化完成后的执行器(在写这篇文章的时候,回去看了下,这个好像忘记实现了。。。)
- IOC系列的总结