Spring简单了解
如何选择框架
- 对应的开发者社区是否有名、是否活跃;
- 框架的模块是否不断迭代;
IOC原理
IOC(inversion of control):控制反转
- spring core最核心的部分;
- 需要先了解依赖注入(Dependency Inversion)
DI举例:设计行李箱
常规设计:
如上图设计思想,假如设计完成后需要修改*,那后面全得改。
修改成size动态可变的:
依赖注入设计
含义:把底层类作为参数传递给上层类,实现上层对下层的“控制”
修改前:
要求size动态设计的修改后:
IOC、DI、DL的关系
DL已经被抛弃,因为它需要用户自己使用API进行查找资源和组装对象,极有侵入性;而DI是spring以及谷歌的某个程序负责组装
依赖注入的方式
四者关系
上面两种设计方式中对luggage进行初始化的代码发生的地方就是控制反转容器所做的事情了。
IOC的优势
- 避免在各处使用new来创建类,并且可以做到统一维护;
- 创建实例的时候不需要了解其中的细节
上图中第一个就是DI创建luggage的实现,第二个就是IOC容器创建luggage的实现。
最后,蓝色部分就是被隐藏的细节,我们使用IOC工厂创建的时候只需要简单的new Luggage()就能实现上面的全部过程。
spring IOC
- 读取应用程序提供的Bean配置信息,并在Spring容器中生成一份Bean注册表。
- 根据生成的Bean注册表通过反射机制实例化Bean,并装配好Bean之间的依赖关系。
- 将生成的Bean实例对象放入Spring容器中。
Spring IOC支持的功能
spring IOC容器的核心
BeanFactory和ApplicationContext
BeanFactory : Spring框架最核心的接口
- 提供IOC的配置机制;
- 包含Bean的各种定义,便于实例化Bean;
- 建立Bean之间的依赖关系;
- Bean生命周期的控制。
ApplicationContext和BeanFactory比较
- BeanFactory是spring框架的基础设施,面向spring;
- ApplicationContext面向使用Spring框架的开发者
ApplicationContext的功能(继承多个接口)
- BeanFactory:能够管理、装配Bean;
- ResourcePatternResolver:能够加载资源文件;
- MessageSource :能够实现国际化等功能;
- ApplicationEventPublisher : 能够注册监听器,实现监听机制;