Spring简单了解

如何选择框架

  1. 对应的开发者社区是否有名、是否活跃;
  2. 框架的模块是否不断迭代;

IOC原理

IOC(inversion of control):控制反转

  1. spring core最核心的部分;
  2. 需要先了解依赖注入(Dependency Inversion)

DI举例:设计行李箱

常规设计:

Spring简单了解
如上图设计思想,假如设计完成后需要修改*,那后面全得改。
Spring简单了解
修改成size动态可变的:
Spring简单了解

依赖注入设计

含义:把底层类作为参数传递给上层类,实现上层对下层的“控制”
Spring简单了解
修改前:
Spring简单了解
要求size动态设计的修改后:

Spring简单了解

IOC、DI、DL的关系

DL已经被抛弃,因为它需要用户自己使用API进行查找资源和组装对象,极有侵入性;而DI是spring以及谷歌的某个程序负责组装
Spring简单了解

依赖注入的方式

Spring简单了解

四者关系

Spring简单了解
上面两种设计方式中对luggage进行初始化的代码发生的地方就是控制反转容器所做的事情了。

IOC的优势

  1. 避免在各处使用new来创建类,并且可以做到统一维护;
  2. 创建实例的时候不需要了解其中的细节
    Spring简单了解
    上图中第一个就是DI创建luggage的实现,第二个就是IOC容器创建luggage的实现。
    Spring简单了解
    最后,蓝色部分就是被隐藏的细节,我们使用IOC工厂创建的时候只需要简单的new Luggage()就能实现上面的全部过程。

spring IOC

  1. 读取应用程序提供的Bean配置信息,并在Spring容器中生成一份Bean注册表。
  2. 根据生成的Bean注册表通过反射机制实例化Bean,并装配好Bean之间的依赖关系。
  3. 将生成的Bean实例对象放入Spring容器中。

Spring简单了解

Spring IOC支持的功能

Spring简单了解

spring IOC容器的核心

BeanFactory和ApplicationContext

Spring简单了解
Spring简单了解

BeanFactory : Spring框架最核心的接口

  1. 提供IOC的配置机制;
  2. 包含Bean的各种定义,便于实例化Bean;
  3. 建立Bean之间的依赖关系;
  4. Bean生命周期的控制。

Spring简单了解

ApplicationContext和BeanFactory比较

  1. BeanFactory是spring框架的基础设施,面向spring;
  2. ApplicationContext面向使用Spring框架的开发者

ApplicationContext的功能(继承多个接口)

  1. BeanFactory:能够管理、装配Bean;
  2. ResourcePatternResolver:能够加载资源文件;
  3. MessageSource :能够实现国际化等功能;
  4. ApplicationEventPublisher : 能够注册监听器,实现监听机制;

bean的作用域

Spring简单了解

Spring简单了解
Spring简单了解