前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搞懂Spring IOC控制反转

搞懂Spring IOC控制反转

作者头像
多凡
发布2019-11-01 09:18:42
4020
发布2019-11-01 09:18:42
举报
文章被收录于专栏:sringboot

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44580977/article/details/96786257

首先,控制反转是Spring 框架为解决代码的耦合问题

1.什么是程序的耦合?

耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。 耦合的强弱取决于模块间接口的复杂性、调 用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立 性)。 耦合性存在于各个领域,而非软件设计中独有的,但是我们只讨论软件工程中的耦合。

通俗讲就是,连个模块之间的联系程度,就如买卖中,原本是卖家和卖家,突然多了个中介在中介,这个就是降低耦合了。

2.软件开发中耦合的代码有哪些
代码语言:javascript
复制
/**
 *      耦合代码:程序间的依赖关系
 *          包括:
 *              类之间的依赖
 *              方法间的依赖
 *      解耦:
 *          降低程序间的依赖关系
 *      实际开发中:
 *          应该做到:编译期不依赖,运行时才依赖。
 *      解耦的思路:
 *          第一步:使用反射来创建对象,而避免使用new关键字。
 *          第二步:通过读取配置文件来获取要创建的对象全限定类名
 */
//类之间的耦合
public class AccountServiceImpl implements IAccountService {  
	//这里就是存在类之间的耦合,
	//这导致没有AccountDaoImpl就无法编译程序了,
	private IAccountDao accountDao = new AccountDaoImpl(); 
}

//方法之间的耦合
public static void main(String[] args) throws Exception {   			
	//1.mysql注册驱动
	//这就是方法的耦合,
	//同样没有这个类就无法编译报错了
	DriverManager.registerDriver(newcom.mysql.jdbc.Driver());   
}
3.Spring 框架是如何解决耦合的?
  1. 使用配置文件,如xml、properties 配置类的全限定包名和类名信息。
  2. 然后工厂类读取配置信息,使用反射创建类,类的创建有单例和多例,会使用Map集合(即IOC核心容器,下篇会介绍核心容器)去控制

控制反转(Inversion Of Contro)指的就是这中方式去创建类

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.什么是程序的耦合?
    • 2.软件开发中耦合的代码有哪些
    • 3.Spring 框架是如何解决耦合的?
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档