学好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;} }
- 学好spring系列之理解DI(控制反转)
- Spring框架之依赖注(DI)和控制反转(IOC)的理解,写的太好了
- Spring 深入理解IOC(控制反转)和DI(依赖注入)
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring之IOC(控制反转)\DI依赖注入
- Helloworld之Spring依赖注入/控制反转(DI/IoC)版
- 学好Spring系列之理解AOP
- Spring学习之——控制反转(IoC)与依赖注入(DI)
- Spring IOC(控制反转)和DI(依赖注入)
- Spring-IOC(控制反转)+DI(依赖注入)
- Spring 控制反转(IOC)与依赖注入(DI)
- Spring控制反转与依赖注入(IOC && DI)
- Spring 控制反转IOC,依赖注入DI
- 谈谈对Spring 控制反转(IOC)及依赖注入(DI)的理解
- 如何理解Spring的控制反转IOC和依赖注入DI思想
- spring框架学习之路(一)-入门基础(1)-IOC(控制反转)&DI(依赖注入)
- 深入理解Spring IoC(控制反转)
- VC++ MFC编程实现开机自启动
- tomcat 集群(2)总结
- NVIDIA-TX1 刷机--填坑指南
- js笔记
- [iOS]Advanced Memory Management Programming Guide 高级内存管理编程指南(官方文档翻译)
- 学好spring系列之理解DI(控制反转)
- Android 进程与线程
- 翻墙爬取维基百科
- bnu10805矩形神码的
- rsyslog 传输mysql 日志
- ZooKeeper管理员指南——部署与管理ZooKeeper
- 两篇喜欢的诗词
- powerDesigner 创建数据库表并导出sql
- 洛谷[P1002]过河卒 垃圾动规