栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简述 Spring IoC

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简述 Spring IoC

Spring IoC 思想简述

IoC,Inverse of Control,控制反转。

仅仅只看名字好像不能理解它的含义,那我们来看它的另一个名词:依赖注入

名字就好理解一些了,即某个Java对象(调用者)需要调用另一个Java对象(被依赖对象)的方法时,不是传统的由调用者***主动***去创建被依赖对象,而是***被动***的接受Spring容器为调用者的成员变量赋值即可。

由此可见,依赖注入是一种优秀的解耦方式,它可以让Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

这样,我们大致就能理解Ioc的思想了。

控制反转,反转的是程序主动权,将对程序的控制从程序员手上,给到了用户。用户可以通过自己的需求来要求程序的对应功能,从而实现组件之间的解耦

下面来看一段示例代码:

private UserDao userdao = new UserDaoA();

在这个事例中,我们在业务层通过new新建了一个UserDaoA的对象,这样我们就可以通过userdao调用UserDaoA的方法。

但,如果用户需求改变,现在需要UserDaoB的方法了呢?

朴素的思想告诉我们,只要修改业务层的代码,将userdao对象的类型修改为UserDaoB即可。当然,这是一个可行的办法,在简单的程序中,这种方案清晰简易,但更复杂一些呢,应用场景要求的不同类更多些呢,难道所有的更改都需要程序猿累死累活的一一改动吗,这无疑是一项大工程了。

下面是IoC思想下设值注入的代码:

private UserDao userdao;

//使用set注入,让用户决定使用哪一个UserDao
public void setUserDao(UserDao ud){
  this.userdao = ud;
}

乍一看这个例子,创建一个userdao对象还需要写一个set方法,貌似更复杂了,但实际上,在复杂的应用环境中,这样的方案无需程序员再维护这个userdao的类型,只需用户DIY即可。

如果当前需要的是UserDaoC、UserDaoD,同样只需要通过注入的值的类型去调用对应不同的方法即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号