番外篇
农夫需要把菜运输到大象国去卖
于是自己创建了一个工厂专门生成运输工具(工厂模式)
后来农夫觉得自己开工厂太费劲了,于是去寻找有直接生产运输工具的工厂。终于找到了一个叫做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的生命周期