番外篇
农夫需要把菜运输到大象国去卖

于是自己创建了一个工厂专门生成运输工具(工厂模式)

后来农夫觉得自己开工厂太费劲了,于是去寻找有直接生产运输工具的工厂。终于找到了一个叫做IoC的工厂

农夫从IoC工厂那里直接购买了一个运输工具(getBean),由于农夫之前也没见过飞机和轮船,不知道这个究竟是个什么运输工具。但是由于有运输工具的使用说明书(接口方法),农夫成功的使用运输工具把菜运输到了大象国。

接下来我们来去探讨采访下IoC工厂的流水线是怎么加工生产产品的。
RES员工(Resource)负责接收生成运输工具需求,包括运输工具的创建参数(xml配置)和图纸(Class),以及依赖的其他零部。

BDR员工(BeanDefinitionReader)负责分析需求,并且把需求整理为工厂内部规范的格式BeanDefinition。

BF员工(BeanFactory)拿到BDR员工提供的BeanDefinition开始制造产品,三号员工同时负责外部交易,通过向客户提供getBean方法让客户来这里拿产品。

1  | ClassPathResource res = new ClassPathResource("spring.xml");  | 
后来厂长觉得前面三号员工这样相互配合环节还是太多了,于是招了一个全栈工程师ApplicationContext,同时能够做前面三号员工的工作。

1  | ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");  | 
这个全栈工程师是一个勤奋的员工,学习了很多技能:
- 从ApplicationEventPublisher那里学会了事件监听机制,可以让工厂里面的产品之间发送接收消息;
 - 从MessageSource学会了外语交流能力;
 - 从InitializingBean那里学会了售后服务,在卖出产品后,接收用户的需求调整;
 - 从BeanPostProcessor那里学会了售前售后。
 
1、Spring IoC容器功能

2、Spring IoC容器设计原理

IoC容器接口设计

详细介绍:Spring IoC原理剖析
BeanFactory容器设计原理

ApplicationContext设计原理

详细介绍:Spring IoC Q&A
3、Spring IoC容器初始化流程

详细介绍:Spring IoC原理剖析
4、Spring IoC容器依赖注入流程
BeanFactory.getBean(String name)
Bean实例化

Bean初始化
createBean中调用了populateBean方法,该方法进行了依赖注入处理,主要通过bean definition中的属性值填充BeanWrapper中的bean实例
详细介绍:Spring IoC原理剖析
5、Spring事件监听机制

详细介绍:Spring事件驱动模型
6、Spring Bean的生命周期

详细介绍:Spring IoC之Bean的生命周期