IOC控制反转(依赖注入思想)
获取map 类型的 request session application 的方法:
实现RequestAware,SessionAware,ApplicationAware接口
private Map<String,Object> request;
private Map<String,Object> session;
private Map<String,Object> application;
public void setRequest(Map<String, Object> request) {
this.request = request;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public void setApplication(Map<String, Object> application) {
this.application = application;
}
以上实际上是运用了IOC(inverse of Control)控制反转的实想,也叫做依赖注。
所谓依赖注入,是指程序在运行的过程中,如果需要另一个对象的协作(调用它的方法,访问它的属性)时,无需在代码中创建被调用者,而是依赖于外部容器的注入。Spring 的依赖注入对调用者和被调用者几乎没有任何要求,完全支持POJO之间依赖关系的管理。
依赖注入有两种:
1.设值注入:IOC容器使用setter方法来注入被依赖的实例。
2.构造注入:IOC容器使用构造器来注入被依赖的实例。
理解:
1在传统的程序设计过程中,通常由调用者创建被调用者的实例,而在依赖注入的模式下,创建被调用者的工作不在由调用者来完成,因此称为控制反转,创建外部实例的工作由Spring容器来完成,然后注入调用者,因此称为依赖注入。
2.通过依赖注入,java EE 应用中的各种组件不需要以硬编码的方式耦合在一起,甚至无需工厂模式。
3.举例理解依赖注入:
一个人(java实例,调用者)需要一把斧子(java实例,被调用者)。
(a)在原始社会当中,几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一把斧子(被调用者)。对应的情形为:java程序里的调用者自己创建被调用者,通常采用new关键字调用构造器创建一个被调用者,这是java初学者经常干的事情。
(b)进入工业社会,工厂出现了,斧子不在由普通人完成,而是由工厂生产,此时需要斧子的人(调用者)找到工厂,购买斧子,无需关心斧子的制造过程。对应简单的工厂模式,调用者只需要定位到工厂,无需管理被调用者的实现。
(c)进入共产主义社会,需要斧子的人甚至无需定位工厂,“坐等”社会提供即可。调用者无需关心被调用者的实现,无需理会工厂,等待Spring依赖注入。
(a)的缺点及坏处:Java实例的调用者创建被调用者的java实例,调用者直接使用new关键字创建被调用者的实例,程序高度耦合,效率低下。坏处:
(1)可扩展性差。
(2)各种组件职责不清。
(b)调用者无需关心被调用者的具体实现过程,只需找到符合标准的(接口)的实例即可使用。此时是面向接口的编程,可以让调用者和被调用者解耦,这是工厂模式大量使用的原因。缺点:仍需调用者主动定位工厂,调用者与工厂耦合在一起。
(c)这种是最理想的情况:程序无需理会被调用者的实现,无需定位工厂,这是最好的解耦方式。实例之间的依赖关系由IOC容器负责管理。
分享到:
相关推荐
springIOC 小例子 附带源码 适合新手学习
控制反转 依赖注入的c#实现,很好的教程。
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120404805 博客源码快照
【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120402953 博客源码快照
该项目实现了简单的IOC技术思想和DI依赖注入
本文文档中有 控制反转 DI依赖注入,希望可以给大家在技术上有一点的帮助
控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法 。在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖完全硬编码在程序中,对象的创建有程序自己控制;...
本文主要介绍了PHP控制反转(IOC)和依赖注入(DI)的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
本文介绍了Spring框架中的控制反转IOC和依赖注入DI,欢迎阅读,共同学习,一起进步。 Spring框架基础参考:深入学习Spring基础 文章目录一.入门程序和IOC简介二.IOC-控制反转三.DI-依赖注入四. IOC和DI五.Spring...
1. 软件系统在没有引IOC容器之前,如图1所示,对象A依赖于对象B,那么对象A在初始化或者 2. 软件系统在引IOC容器之后,这种情形就完全改变了,如图2所示
我相信很多朋友学习IOC概念的时候,查找了很多资料结果还是一头雾水,感觉高深难懂或者一知半解,而我这篇博客就是以通俗易懂的话语,用故事的方式,讲解IOC(控制反转)和DI(依赖注入)的概念,让大家不再晕,不再觉得...
Spring框架学习中的核心,控制反转IOC,理解Spring框架主要注入所依赖的资源,解耦开发
主要介绍了.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
人们用一个大而化之的名字来称呼这个模式:“控制反转”( Inversion of Control,IoC)。在本文中,我将深入探索这个模式的工作原理,给它一个更能描述其特点的名字——“依赖注入”(Dependency Injection),并将...
主要给大家介绍了关于ASP.NET Core依赖注入系列教程之控制反转(IoC)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1.2 IoC(控制反转)和DI(依赖注入)入门 1 传统的Java类 在工程下创建包ioc,在ioc包中创建类Test。(为了看起来清楚,将三个类写在了同一个Java文件中,其中唯一的public类为Test)。类的含义和关系如下: Car类...
源代码 博文链接:https://danielkwo.iteye.com/blog/40945