浅谈依赖注入
来源:互联网 发布:穿越火线m4a1千变数据 编辑:程序博客网 时间:2024/05/21 10:06
背景:生活总是会提供一些你原本不知道的东西,面对这些不知道又反复被"提醒"的东西,我们总能通过其他的途径得知关于它某某属性,某某方法。就像是这个“依赖注入”一样,我们总是能用到它,但是就是不知道它的实际定义是怎样,还有什么地方用得到它,用于不用到底有什么不同,好处又是什么,有没有特别的坏处……这一切的一切似乎和自己没有多大关系,但是“放过”又不是我们的风格。
一、控制反转
“要想知其子,必先究其母”,查询过资料,依赖注入是控制反转的一种类型。那么控制反转又是什么呢?
控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心。
控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。依赖注入应用比较广泛。
控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。
二、依赖注入
依赖注入的基本原则是:应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由IoC容器负责,“查找资源”的逻辑应该从应用组件的代码中抽取出来,交给IoC容器负责。
当前比较知名的IoC容器有:Pico Container、Avalon 、Spring、JBoss、HiveMind、EJB等。
在上面的几个IoC容器中,轻量级的有Pico Container、Avalon、Spring、HiveMind等,超重量级的有EJB,而半轻半重的有容器有JBoss,Jdon等。
可以把IoC模式看做是工厂模式的升华,可以把IoC看作是一个大工厂,只不过这个大工厂里要生成的对象都是在XML文件中给出定义的,然后利用Java 的“反射”编程,根据XML中给出的类名生成相应的对象。从实现来看,IoC是把以前在工厂方法里写死的对象生成代码,改变为由XML文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高灵活性和可维护性。
IoC中最基本的Java技术就是“反射”编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。反射的应用是很广泛的,像Hibernate、Spring中都是用“反射”做为最基本的技术手段。
在ITOO中我们用到了依赖注入
三、举个栗子
在ITOO中我们用到了依赖注入,下面简单的介绍一下。
1、首先在Web.config中对已经写好的B层进行注解:
2、在Client端调用B层接口的时候,进行实例化操作:
3、使用的时候直接用2中刚刚实例化出来的对象。
四、学习心得
1、面对生活给的种种,我们先坦然的接受,然后慢慢地消化。
2、在例子中实践远远比在理论中低迷要好得多。
3、“放过”不是我们的风格,“将就”也不是我们的宗旨,我们要做的就是究其根本,找到本源。
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈依赖注入
- 浅谈Dagger2依赖注入框架
- 浅谈依赖注入之基础篇
- 浅谈spring4泛型依赖注入
- 【spring-bean】浅谈Spring的依赖注入(基础)
- 浅谈依赖注入思想与面向接口编程
- AngularJS 浅谈DI-依赖注入 $injector的神奇之处
- 依赖注入
- 依赖注入
- 依赖注入
- 十三、迭代器设计模式
- Redis主从复制
- MongoVUE连接MongoDB,日志报错: “Failed to authenticate root@admin with mechanism MONGODB-CR: Authenticatio
- 线程
- python里的re模块
- 浅谈依赖注入
- Android Handler的内部原理
- Java - Nuc - 郭姐散步 ( 矩阵快速幂 )
- 【ROS学习】(十一)常见问题及解决方案
- C++ 构造函数与析构函数
- Unity中有两种Animation Clip
- Hibernate4中hibernate.cfg.xml文件的配置
- MongoVUE已连接MongoDB,但是,用MongoVUE,看不到MongoDB数据库中的数据,日志报错: “Failed to authenticate root@dataPlantform
- JAVA中this用法小结