您现在的位置: 计算机论文网 >> 计算机论文 >> 软件工程 >> 文章正文
|
Spring学习笔记:1、概念理解
对Spring耳闻已久,但一直没有时间和心情去看它,最近它的声音是越来越大了,Java视线http://forum.javaeye.com/有不高手在谈论它。于是趁着有空闲时间,我也花了两个晚上看了看Spring,看的是夏昕的<Spring开发指南>http://www.xiaxin.net/Spring_Dev_Guide.rar,文章写得不错。以下谈谈我的学习感受 一、Spring的IoC(Inversion of Control)。 这种设计模式是怎么来的呢?是实践中逐渐形成的。 第一阶段:用普通的无模式来写Java程序。一般初学者都要经过这个阶段。 IoC中最基本的Java技术就是"反射"编程。反射又是一个生涩的名词,通俗的说反射就是根据给出的类名(字符串)来生成对象。这种编程方式可以让对象在生成时才决定要生成哪一种对象。我在最近的一个项目也用到了反射,当时是给出一个.properties文本文件,里面写了一些全类名(包名+类名),然后,要根据这些全类名在程序中生成它们的对象。反射的应用是很广泛的,象Hibernate、String中都是用"反射"做为最基本的技术手段。 在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为什么反射技术没有普通应用开来的原因。但经SUN改良优化后,反射方式生成对象和通常对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。
IoC最大的缺点是什么?(1)生成一个对象的步骤变复杂了(其实上操作上还是挺简单的),对于不习惯这种方式的人,会觉得有些别扭和不直观。(2)对象生成因为是使用反射编程,在效率上有些损耗。但相对于IoC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。(3)缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。 总的来说IoC无论原理和实现都还算是很简单的。一些人曾认为IoC没什么实际作用,这种说法是可以理解的,因为如果你在编程中很少使用接口,或很少使用工厂模式,那么你根本就没有使用IoC的强烈需要,也不会体会到IoC可贵之处。有些人也说要消除工厂模式、单例模式,但是都语焉不详、人云亦云。但如果你看到IoC模式和用上Spring,那么工厂模式和单例模式的确基本上可以不用了。但它消失了吗?没有!Spring的IoC实现本身就是一个大工厂,其中也包含了单例对象生成方式,只要用一个设置就可以让对象生成由普通方式变单一实例方式,非常之简单。 总结:
如果你已经熟悉Struts,那么不必把MVC做为重点学习内容。基本上我认为Spring MVC是一个鸡肋,它的技术上很先进,但易用性上没有Struts好。而且Struts有这么多年的基础了,Spring很难取代Struts的地位。这就是先入为主的优秀,一个项目经理选用一种框架,不能单纯的从它的技术上考虑,还有开发效率,人员配置等都是考虑因素。但做为研究性的学习,Spring的MVC部份还是蛮有价值的。
AOP又称面向方面编程,它的实现原理还是用了反射:通过对某一个种类的方法名做监控来实现统一处理。比如:监控以"insert"字符串开头的方法名,在这种方法执行的前后进行某种处理(数据库事务等)。但这里我有一个疑问?不一定所有以insert开头的方法都是数据库操作,哪么当某个insert开头的方法不是数据库操作,你又对它进行了数据事务的操作,这样的错误如何防止???我对这方面了解不深,还是只知道一个大概。
另外,很赞赏<Spring开发指南>的作者夏昕的观点,将自已的经验写成文档公开出来,不过一个人的力量终究太弱。最好能够形成一个组织,对一种新技术,由一两个人出一个大纲,大家把它分了,更写一章,然后由两三个人总集起。我个人感觉,由于英文语言的关系,新技术引进到国内的还是太慢了,至少要比国外慢上一年以上,成立一个开源文档组织还是很有意义的事。 |
专题栏目 最新推荐 相关文章 spring架构 |