学好spring系列之理解DI(控制反转)

来源:互联网 发布:voip服务器软件 编辑:程序博客网 时间:2024/06/05 03:47

1.什么是spring框架以及spring框架的好处

首先必须得认识到spring框架是一种轻量级的J2E应用程序框架,它主要的重点就是IOC容器以及AOP面向切面编程(同时也是轻量级的),它是采用非侵入式的设计,所以可以很好的跟其他的框架结合起来使用,比如hibernate,structs,ibatis等框架,在开发的时候非常便利。

2.什么是spring框架的IOC容器呢?

IOC容器的全称是Inversion of Control,中文翻译过来一般称为控制反转;同时也有的文章或者称呼为Dependency Injection(DI),就是所谓的依赖注入。在学习的过程中,个人觉得如果使用控制反转这个观念来理解的话会比较困难,因为首先我们要明白没有用spring框架的时候,我们是怎么建立类的实例对象的,很显然是要用到New关键字,比如说有一个类Class A{};我们一般要用的时候一般是这样的 A a = new A();在使用类的实例对象这一个过程中,我们是主动的去创建对象的,但是现在应用spring框架后,spring容器就自动的为我们做好了这一步,就是我们要实例化类的时候自动帮我们执行了new这一步;所以说在对对象的管理上我们已经失去了主动权,主动权在spring容器的手中,我们只是从它的手上拿过来用就行了。这就是所谓的控制反转,权限的问题。

3.什么又叫依赖注入(Dependency Injection)?

其实这个很好理解,我们在做项目的时候经常会出现这种情况:假设有两个类A,B;我们要在B中引入A的实例化对象,首先我们是不是要在类B里面声明类A,然后才可以调用A里面的成员变量或者是方法。其实这就是依赖注入,依赖注入一种有三种,一种最常用的是setter注入,另一种是构造注入(偶尔使用),还有一种是接口注入(一般不会用到)。所以我们一般会用setter注入就好,构造注入也要了解。


4.怎么去实现setter注入以及构造注入?

1.setter注入

这个其实也不难理解,首先从字面来setter,其实就是set方法,我们在定义一个类的时候是不是要定义setter和getter方法,其实就是一个道理,我们在注入的时候要有setter要注入的类,可以说要声明一下吧。

public class studentDaoImpl {    private Student student;//通过setter的方法注入,就是下面这一步,目的是得到要注入的对象实例public void setStudent(Student student) {this.student = student;}}


2.构造注入

跟上面的一个道理,不过我们不在用setter方法了,也是通过构造函数的方法实现注入:

public class studentDaoImpl {    private Student student;//通过构造函数的方法注入,就是下面这一步,目的是得到要注入的对象实例public studentDaoImpl(Student student) {this.student = student;}    }


0 0
原创粉丝点击