Spring Core 源码分析(1)
Spring Core 简介
参考 Spring 官网 介绍
spring core的主要功能为 IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
其中 IoC Container是最重要的功能。
Inversion of Control (IoC) 和 Dependence Injection (DI)
IoC 是为了解决什么问题
在 OOP 语言编写的软件工程中, 必定有很多对象(Object), 这些对象直接又相互耦合, 组成复杂的软件系统. 如果特别多的对象直接, 过多的耦合关系, 对于编码人员来说, 维护这些耦合关系就显得有些困难了.
为了解决这种 OOP 软件工程中, 对象直接耦合关系的问题, Michael Mattsson 在1996年的文章 Object Oriented Frameworks: a survey on methodological issues 中提出了 IoC 理论, 通过"解耦"解决这个问题.
IoC 和 DI
见字识意, IoC 就是通过一种方法, 不用编码人员来手动维护对象直接的耦合关系 (否则,一般需要通过 new 关键字创建对象, 通过setter方法填充属性, 或者通过构造函数填充属性).
也就是, 这些对象的耦合, 交给了其他的东西(框架 / 通用设计模式 / 策略 ...)控制.
Dependence Injection (DI) 就是实现 IoC 的一种具体的 模式(pattern). 由 Martin Fowler 在2004年的文章Inversion of Control Containers and the Dependency Injection pattern 中提出.
可以理解为, IoC 是一种更加高级的抽象, 是一种解决过耦合问题的思想/理念(principle), DI是一种更加具体的实现方式, 更重于细节, 是一种模式(pattern). 虽然有人认为 IoC 也是一种模式 pattern, 但是这两个放在一起对比的时候, DI更加具体一些.
相应的, 除了 DI, 还要其他 模式(pattern) 可以实现 IoC 的理念. 例如: inversion-of-control

IoC 容器
IoC容器指框架级别的概念. Java体系中, 常见的有 Spring、Guice、Pico Container、EJB、JBoss等.
使用IoC容器注意
- 使用成熟的IoC框架
- 考量引入框架后, 团队学习和使用成本
- 考量引入框架后, 是简化了项目, 还是使项目变复杂.
浙公网安备 33010602011771号