依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。
具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被
调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。
但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者
实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。
依赖注入让bean与bean之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起
依赖注入,是指程序运行过程中,如果一个对象需要调用另一个对象协助时,无须在代码中创
建被调用者,而是依赖于外部的注入。该控制层是采用动态、灵活的方式来管理各种对象。
对象与对象之间的具体实现互相透明。
类似于spring的轻量级的框架。
之前在我们做项目的时候,一个对象调用另一个对象是通过用new去得到它的实例的。如在
service层里面调用dao层的实例,就是能过new来得到的,但是这样它的耦合度非常的高,
删除其中一个类的话,它要改动的地方就很多了,这样很不方便。 于是我们又对该项目进行
了改动,通过一个工厂去得到它的实例,把所有的dao层的实例都放到了工厂里面了,在
service层里能过这个工厂就可以得到了,而不需要能过new来得到实例了。这样减少了它的耦
合度,但是并不是说这样就可以了,因为它们之间还是存在着耦合度。调用的类与工厂类之间
就存在了耦合度了。 为了解决这一问题
我们使用了一种容器,就是依懒注入。使用依赖注入,我们再也看不到任何的工厂了,在这
里我们也看不到new关键字了。在这里我们使用依赖注入,能大大的减少类与类之间的耦合度
了。因为它是从配置文件里面得到它指定的对象的。这样就没有与对象之间耦合起来了。
依赖注入(设值注入、构造注入),作用是可以使Spring将各层的对象以松耦合的方式组织
在一起,Action对象无须关心Service对象的具体实现,Service对象无须关心持久层对象的
具体实现,各层对象的调用完全面向接口。当系统需要重构时,代码的改写量将大大减少。
当然,这里不止这一点好处的,以下再介绍几点:
减少依赖:
能够使代码重用:减少一个组件依赖关系通常可以更容易地重复使用在不同的上下文。
代码容易测试:因为每个类都模块化了,依懒关系低了。
对于代码的可读性也加强了。
减少依赖传递,例如:A-B-C-D
什么时候用:
配置数据,经常改变的数据,如:(sql)语句时
一个组件多个类使用的时候
不同的实现注入同一个组件时
实现注入来自不同的配置
需要容器提供服务
什么时候不用:
配置永远是不变的,
实现类也是永远不变的
分享到:
相关推荐
最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中,但是在服务调用的时候总是获取到最后注入的那个方法的实现,这...
控制反转 依赖注入的c#实现,很好的教程。
较为框架式的演示了DI服务依赖注入 适用于熟悉C#中的继承,基本的Core命令使用等. 该示例演示了以服务器集群为背景的各种业务的依赖注入. 示例来自于B站杨中科老师的.NET Core(6.0)教学.
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的 依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程(将依赖关系注入到对象中) ,spring的...
详解 Spring 3.0 基于 Annotation 的依赖注入实现。。详解 Spring 3.0 基于 Annotation 的依赖注入实现。。
✨一个轻量级的PHP依赖注入框架,让你自定义的方法也可以使用依赖注入.
javaEE 开发中 现在最成熟的框架之一应该就是spring了 spring框架最强大的地方就是实现了依赖注入 也叫控制反转 最近的一个项目中用的就是 spring框架 spring框架是工厂模式的应用结合了MVC的设计思想 大家可以...
[Manning Publications] 依赖注入 实战 (英文版) [Manning Publications] Dependency Injection (E-Book) ☆ 图书概要:☆ Dependency Injection is an in-depth guide to the current best practices for using ...
Entity Framework Repository(含依赖注入)
Unity为微软推出的一个轻量级依赖注入容器,内带了一个名为StopLight的快速入门示例,基于WindowsForm技术构建,里面有大量的冗余代码。我将全部程序用WPF技术进行了重构,保留使用Unity的全部技术和程序的全部功能...
IoC 依赖注入 技术总结 IoC 依赖注入 技术总结
EFcore Repository 依赖注入方式实现数据库基本操作
网上下载整理的关于依赖注入的介绍。循序渐进,非常不错。
Spring Ioc 注解 依赖注入
Angular6依赖注入Demo,包含懒加载实现。 Angular6依赖注入Demo,包含懒加载实现。
本项目为Java项目,使用Spring实现依赖注入,实现采用ApplicationContext,不再直接使用XmlBeanFactory方式。适合初学者了解Spring依赖注入的实现。
简介:一个小的依赖注入容器
spring依赖注入底层详解,很不错的资源,欢迎大家来下载学习。
该资源使用vs2017编写的一个关于如何使用Ninject进行依赖注入的事例,具体的说明步骤可以参考博客:https://blog.csdn.net/liudexin1985?t=1&orderby=UpdateTime
最近在熟悉反射与依赖注入,特意写了一下简单的实例,希望可以帮助到你我他