Spring87641 .docx
《Spring87641 .docx》由会员分享,可在线阅读,更多相关《Spring87641 .docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结一、 Spring的 IoCInversionofControl。这是 Spring 中得有特点的一部份。 IoC 又被翻译成 “掌握反转 ”,也不知道是谁翻译得这么别扭,感觉很深奥的词。其实,原理很简洁,用一句通俗的话来说:就是用 XML 来定义生成的对象。IoC 其实是一种设计模式, Spring 只是实现了这种设计模式。这种设计模式是怎么来的了?是实践中逐步形成的。第一阶段:用一般的无模式来写Java程序。一般初学者都要经过这个阶段。其次阶段:频繁的开头使用接口,这时,接口一般都会相伴着使用工厂模式。第三阶段:使用IoC 模式。工厂模式仍不够好:(1 )由于的类的生成代码
2、写死在程序里,假如你要换一个子类,就要修改工厂方法。(2 )一个接口经常意味着一个生成工厂,会多出许多工厂类。可以把 IoC模式看做是工厂模式的升华,可以把 IoC看作是一个大工厂, 只不过这个大工厂里要生成的对象都是在XML 文件中给出定义的, 然后利用 Java的“反射 ”编程, 依据 XML 中给出的类名生成相应的对象。从实现来看, IoC是把以前在工厂方法里写死的对象生成代码,转变为由 XML 文件来定义,也就是把工厂和对象生成这两者独立分隔开来,目的就是提高敏捷性和可保护性。IoC中最基本的 Java 技术就是 “反射 ”编程。反射又是一个生涩的名词,通俗的说反射就是依据给出的类名
3、(字符串) 来生成对象。 这种编程方式可以让对象在生成时才打算要生成哪一种对象。我在最近的一个项目也用到了反射,当时是给出一个.properties文本文件,里面写了一些全类名(包名类名),然后,要依据这些全类名在程序中生成它们的对象。反射的应用是很广泛的,象Hibernate、String中都是用 “反射 ”做为最基本的技术手段。在过去,反射编程方式相对于正常的对象生成方式要慢10 几倍,这或许也是当时为什么反射技术没有一般应用开来的缘由。但经SUN 改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依旧有一倍以上的差距)。所以要懂得IoC ,你必需先明白工厂模式和反射编
4、程,否就对它产生的前因后果和实现原理都是无法懂得透彻的。只要你懂得了这一点,你自己也完全可以自己在程序中实现一个IoC框架,只不是这仍要涉及到XML 解析等其他学问,略微麻烦一些。可编辑资料 - - - 欢迎下载精品名师归纳总结IoC最大的好处是什么?由于把对象生成放在了XML 里定义,所以当我们需要换一个实现子类将会变成很简洁(一般这样的对象都是现实于某种接口的),只要修改XML 就可以了,这样我们甚至可以实现对象的热插拨(有点象USB 接口和 SCIS硬盘了)。IoC最大的缺点是什么? ( 1 )生成一个对象的步骤变复杂了(其实上操作上仍是挺简洁的), 对于不习惯这种方式的人,会觉得有些别
5、扭和不直观。(2 )对象生成由于是使用反射编程,在效率上有些损耗。但相对于IoC提高的保护性和敏捷性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特殊高。(3 )缺少 IDE 重构操作的支持,假如在Eclipse要对类改名, 那么你仍需要去XML 文件里手工去改了,这好像是全部XML 方式的缺憾所在。总的来说 IoC无论原理和实现都仍算是很简洁的。一些人曾认为 IoC没什么实际作用, 这种说法是可以懂得的, 由于假如你在编程中很少使用接口,或很少使用工厂模式,那么你根本就没有使用 IoC的剧烈需要, 也不会体会到 IoC 珍贵之处。 有些人也说要排除工厂模式、单例模式, 但是都语焉不详
6、、人云亦云。但假如你看到IoC模式和用上 Spring,那么工厂模式和单例模式 的确基本上可以不用了。但它消逝了吗?没有!Spring的 IoC 实现本身就是一个大工厂,其中也包含了单例对象生成方式,只要用一个设置就可以让对象生成由一般方式变单一实例方式,特别之简洁。总结:(1 ) IoC原理很简洁,作用的针对性也很强,不要把它看得很玄乎。(2 )要懂得 IoC ,第一要明白 “工厂、接口、反射 ”这些概念。二、 Spring中 IOC 的实现明白了 IOC模式的思想以及其优点,再来学习其实现。上面大致描述了PicoContainer以及 S pring各自对 IOC 的实现,这篇来具体看一下
7、Spring中它的实现。Spring中 IOC贯穿了其整个框架,但正如martinflower所说: “ saying thattheselight weightcontainersarespecialbecausetheyuseinversionofcontrolislikesayi ngmycarisspecialbecause ithaswheels”, IOC已经称为框架设计中必不行少的部分。就实现上来讲 Spring实行了配置文件的形式来实现依靠的注射,并且支持 Type2IOC ( SetterInjection)以及 Type3IOC ( ConstructorInjection
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring87641
限制150内