在J2EE平台中,Spring是一种优秀的轻量级企业应用解决方案。它的核心技术就是IoC(控制反转)和AOP(面向切面编程)。
1.什么是控制反转与依赖注入。
IoC的英文是Inversion of Control即控制反转。开发者在使用类之前,需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器,这样开发者在用代码时直接使用类的实例,这就是IoC控制反转。Martin Fowler专门写了一篇文章讨论控制反转的概念,并提出了一个更为准确的概念,叫做依赖注入(Dependency Injection)。
依赖注入有3种类型,Spring支持后两种:
- 接口注入。接口注入基于将调用与实现分离,这种依赖注入方式必须实现容器所规定的接口,使程序代码和容器的API绑定在一起,不是理想的注入方式。
- Setter注入。基于JavaBean的Setter方法为属性赋值。在实际中应用广泛示例如下:
-
public class User{ private String name; public String getName(){ return name; } public void seName(String name){ this.name = name; } }
-
构造器注入。基于构造方法为属性赋值,容器通过调用类的构造方法,将其所需的依赖关系注入其中,示例如下:
-
public class User{ private String name; public User(String name){ //构造器 this.name = name; //为属性赋值 } }
使用构造方法为属性赋值,好处是在实例化对象的同时就完成了属性的初始化。
控制反转与依赖注入的优点是?
由于在控制反转的模式下把对象都放入XML文件中定义,所以开发人员实现一个子类将变得更为简单,修改XML文件即可。而且,控制反转颠覆了“使用对象前必须创建”的传统观念,在控制反转模式下,开发人员不再关注类是如何创建的,从容器中抓取一个类然后直接调用即可。