- 浏览: 95597 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xqxmh:
哈哈哈哈哈哈
12月编程语言榜单公布 C#等评级创新高 - CSDN新闻 -
niechanggang:
这个图片很是形象,linux也来祭奠了。。
【转】悼念一个伟大的公司——Sun - CSDN新闻
假设有两个 JavaBean,A和B,若A中调用了B,通常情况下是通过new创建一个B对象,但使用spring之后,可以将B作为A的一个属性,设置set方法,同时在spring配置文件中对B进行实例化。
这样做将B的实例化从具体的对象转移到了容器中。
以来注入的好处可以这样讲,若因为需求变更,A不需要使用B了,改用C了,若不使用依赖注入,则需要修改A程序并需要重新编译,而若使用依赖注入,在A编码时,将B抽象成一个接口,并将该接口作为A的一个属性进行使用,在具体的A程序实例化时,通过配置文件指定需要具体使用的bean即可。下面转载的文章更形象的说明了这种好处。http://tech.ddvip.com/2008-11/122794102996162.html
配置文件是struts核心的一部分,许多人都不喜欢使用配置文件,我也是其中一个。记得刚开始接触struts的时候,对它的配置文件实在是很烦,但慢慢地,了解了配置文件的作用之后,就喜欢上使用配置文件了。配置文件在项目中的作用是毋庸置疑的,在大型的项目中尤其重要。需求是不断地改变的,但我们的程序可不能老跟着需求变,即使老板吃得消,员工也吃不消啊。改变一个页面的业务逻辑,只需要在配置文件中修改一下action的配置就可以了,其它的代码都不需要改变。说到配置文件,它还有一个很重要的作用,那就是“控制反转”或者“依赖注入”,其实我也搞不清这两个词语之间是什么关系。不过,也没必要在这些文字间咬文嚼字,就用IOC来代替它们好了。在开发过程中,经验会遇到一个类里面包含另一个类的实例,如:
那么,在上面的代码中,B将依赖于A,也就是说,没有A,B就无法正常的执行。这样,B和A就产生了耦合。说得再明白一点,如果B的业务逻辑需要改变了,不想使用A,而是使用C,那么,就需要修改B的代码,还要重新编译,这对于大型的系统来说,需要起来代价是很大的。为了达到高内聚低耦合的需要,我们应该让B依赖于抽象而不是具体。比较常用的方法是使用工厂模式,如:
那么需要改变时,只需要发动工厂就行了,这大概就是平时所说的控制反转吧,由以前的修改B类转为修改工厂类。但是还是需要修改代码,当需要扩展新的类时也要修改工厂类,这明显是换汤不换药嘛,依赖注入也就应运而生了。 对于依赖注入,我的感觉是就像是打针,需要什么就往里面注射什么。那么针在哪里?当然是在配置文件里了。要实现依赖注入,得修改一下B类,添加Setter方法。
此时,B类中A属性就可以通过配置文件来注入了,想要A就注入A,想要C就注入C,多方便啊。注入,你可以这样理解:类是一个封装体,就把它想象成一个空心的球体吧,Setter方法相当于这个球体的一个小孔,注入也就是把它需要的东西通过这个小孔往里面塞。 说了这么多,其实都是在为我下一篇的文章作准备。下一篇文章将发布nstruts2.0,它比先前发布的nstruts1.0有了很大的改进,增加了许多新的元素,并且还支持依赖注入,注入的数据可以是对象,常量,还有集合。这些功能已经能完全满足项目开发中大部分的需求了。同时,nstruts2.0将会是个很好的学习实例,它设计的思路比较清晰和简单,对象框架设计感兴趣的朋友都会有或多或少的帮助。在发布之前,大家可以先看下我先前发布的nstruts1.0,了解一下大概。 |
发表评论
-
数据库数据批量SQL导出工具
2011-07-04 16:05 1314好久没有完整的编码了,没有了code带来的乐趣,每天忙碌与b ... -
ultraedit 中中文乱码 的解决方法
2010-08-25 08:24 0ultraedit 中中文乱码 的解决方法 问题:同样的一个 ... -
was配置jms 进行mq的访问方法
2010-09-07 08:24 01、 软件准备,mq、was均安装完毕,此处使用的是mq ... -
db2 ERRORCODE=-4499, SQLSTATE=08001
2010-09-19 06:50 43281、 db2 ERRORCODE=-4499, SQLSTAT ... -
ultraedit 中中文乱码 的解决方法
2010-08-25 08:24 2295ultraedit 中中文乱码 的解决方法 问题:同样的一个 ... -
was配置jms 进行mq的访问方法
2010-09-07 08:24 15471、 软件准备,mq、was均安装完毕,此处使用的是mq ... -
Hibernate3.3使用手册下载chm版
2010-07-15 13:57 999Hibernate3.3使用手册下载chm版,欢迎下载 -
利用P6SPY +SQL Profiler记录、统计web app对数据库的操作。 - 每日E读 - BlogJava
2010-07-13 05:14 896弄hibernate时,想显示 ... -
P6SPY结合SQL Profile进行数据库调优
2010-07-13 07:51 1022使用p6spy进行数据库操作执行时间的记录极大的方便了数据库程 ... -
设计模式学习笔记,不断更新中……
2010-06-21 03:05 6812010-6-21 设计模式不过是在编程过程中需要遵守的一些 ... -
java容器分类图
2010-05-29 03:07 974做个笔记 -
关于Hibernate获取JDBC连接 直接执行SQL - 客观,辩证,务实,创新 - JavaEye技术网站
2010-06-09 07:58 992关于Hibernate获取JDBC连接 直接执行SQL关 ... -
NIO入门pdf分享
2010-04-13 14:39 1142根据IBM developerwork上的教材整理的pdf文档 ... -
守护线程 - walkes - JavaEye技术网站
2010-04-08 01:51 608守护线程 关键字: 守护线程 守护线程是为其他线程的运 ... -
同步、异步、长连接、短连接
2010-04-08 02:24 1729四个概念对应于网络连 ... -
【转】GEF+EMF Step By Step (转) - 嘟嘟 - BlogJava
2010-04-06 04:55 836学习GEF的曲线还是比较陡峭的,建议按照以下步骤来学(要求先熟 ... -
Java 理论与实践: 使用通配符简化泛型使用
2010-04-07 06:37 558Java 理论与实践: 使用通配符简化泛型使用 理解通配 ... -
draw2d
2010-03-29 22:28 587draw2d,画图简单,n多东西的页面展示搞得我筋疲力尽,稳住 ... -
MQ大大降低了程序的耦合性
2010-03-25 03:20 658通过同一个MQ队列的消息读取,可以将不同的程序模块联系起来,大 ... -
关于strtus2上传文件的问题
2010-03-17 06:26 7351、 strtus2在上传文件时,同样将java.io.Fil ...
相关推荐
Spring中的依赖注入就是上面说的外部,实例不在由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类。 我们不用关心Car的变化,实例之间的依赖关系由IOC容器负责了,等待Spring...
在Angular中使用依赖注入,可以帮助我们实现松耦合,可以说只有在组件中使用依赖注入才能真正的实现可重用的组件。
此文档仅供初学者学习,包括Spring的依赖注入(控制反转)的详细实例。以三层贯穿实例(持久层、业务层、控制层),由MAIN方法直接调用测试用例。
spring 控制反转和依赖注入进行基础知识的生命周期、延迟初始化、装配方式等进行案例总结使用。从而对spring基础知识更加理解。
根据依赖注入的网络资源和自己的理解整理,里面有实例。
主要介绍了对PHP依赖注入的理解,结合实例形式详细分析了PHP依赖注入的相关概念与原理,需要的朋友可以参考下
对spring依赖注入原理进行了详细说明和解析,过程详实,思路清晰,便于新手理解和学习spring依赖注入的核心要义。
本篇文章主要介绍了深入理解Angular中的依赖注入,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Spring.Net,简单例子。从这个例子可以理解通过配置方式实现依赖注入
这正是依赖注入大显身手的之处。现在有效地管理依赖的能力是绝对必要的。本文总结了我对问题探索和一些的解决方案。 一、目标设想我们有两个模块。第一个是负责Ajax请求服务(service),第二个是路由(router)。 ...
依赖注入就控制反转的一种是实现方式,面向对象的特征的重要体现,那么依赖注入中什么是依赖呢,这点用Java开发的人很多都能理解。笼统的说依赖就是一种联系,变量和实现的联系。有关于依赖注入的理解之前写过,传送...
要想理解php依赖注入和控制反转两个概念,就必须搞清楚如下的问题: DI——Dependency Injection 依赖注入 IoC——Inversion of Control 控制反转 1、参与者都有谁? 答:一般有三方参与者,一个是某个对象;...
spring练习 刚刚学spring,做了个小小小项目,来加深理解。... ·其他依赖注入属性,都使用property 元素确定参数值。 Person.java PersonFactory.java Chinese.java American.java bean.xml SpringTest.java
控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法 。在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖完全硬编码在程序中,对象的创建有程序自己控制;...
主要介绍了理解Spring中的依赖注入和控制反转,具有一定参考价值,需要的朋友可以了解下。
理解什么是IoC和DI。 理解构造注入 理解不同数据类型的注入方法 掌握p命名空间注入 Bean自动装配
语言切换:,关于依赖注入依赖注入是一种软件设计模式,其中有人将依赖关系传递给对象。 是更广泛技术的一种形式,有助于有关更多详细信息,您可以阅读此链接另外,我建议您阅读词汇表,这将有助于更好地理解术语。...
一直对依赖注入理解不清楚,最近突然理解了,所以下面这篇文章主要给大家介绍了关于如何简单的理解依赖注入的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
本文主要介绍Angular 理解module和injector的知识,这里整理了相关知识,并详细介绍了依赖注入的问题,有兴趣的小伙伴可以参考下