为了降低Java开发的复杂性,Spring采取了以下4种关键策略:
- 基于POJO的轻量级和最小侵入性编程;
- 通过依赖注入和面向接口实现松耦合;
- 基于切面和惯例进行声明式编程;
- 通过切面和模板减少样板式代码;
1.为了减小耦合,spring采用依赖注入取代直接创建对象。
传统做法:Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。但是这样A、B紧密的耦合在了一起。
例如:
采用依赖注入技术之后(传参),A的代码只需要定义一个私有的B对象,不需要像上例那样直接new来获得这个对象,而是通过控制反转,由一个调控系统调控所有对象的外界实体,将A所依赖的对象的引用传递给A。也可以说,依赖被注入到A对象中。
构造的时候有时把对象作为构造器参数传入。这是依赖注 入的方式之一,即构造器注入(constructor injection)。
例如:
这就是DI所带来的最大收益 ——松耦合。如果一个对象只通过接口(而不是具体实现或初始化过 程)来表明依赖关系,那么这种依赖就能够在对象本身毫不知情的情 况下,用不同的具体实现进行替换。