****用Spring来干什么?
我对Spring的缔造者Rod Johnson Juergen Hoeller 还是非常敬仰的,他的著名的小说《Expert One-on-One J2EE Design and Development》和《J2EE without EJB》还是给了我很大启发,我唯一奇怪的就是从这两本书的思想中是怎么演化出来了Spring?!
Spring原本是一个轻量的,易于学习掌握,API简单,容易配置而且号称高效率的开发框架,而现在,Spring给我的感觉是要无所不包、无所不能了,使用复杂、配置复杂、学习复杂。我估计很快就会有一本书出来,就叫做《J2EE without Spring》。
最近我大概面试了有50个以上的程序员,他们都声称自己精通Spring(至少简历是这样写的),每个人我都问他们这样一个问题:你在你的最近的项目中使用Spring来做什么?回答是千变万化的。
一种是相对标准而且通常的答案:Struts写MVC,Hibernate来做持久层,Spring把他们结合起来;然后我又问:Spring是怎么把他们结合起来的,这样做有什么好处?没有人能够回答我。
另一种的说法也比较有意思,使用IOC和注入来管理配置信息,把Spring当成解析xml的API,这还真是个不错的思路。不过从另一个侧面说明此人不会写解析xml的代码,而且用Spring来干这个事情是比较重量的。另外我个人感觉如果反射搞得明白,IOC没什么用。
用Spring来管理Hibernate更是奇怪,一次动作如果访问10次数据库,就要开关10次session,这是对传统编程的颠覆,呵呵。我们一向都认为,一次和应用服务器的交互只能有一个数据库联接被打开,然后在交互结束后关闭该联接,而不管该次交互要和数据库交互多少次。
而所有的面试者几乎都没有在项目中使用过AOP方式。其实Spring的AOP还是不错的,能够实现AOP的思想,唉,但是,AOP已经过时了(现在流行的是SOA,还得是有中国特色的这种)。不要试图说服我,我很倔的。
其实我个人认为,Spring最大的好处就是能够让普通的初级程序员学会或者说是知道什么是编程到接口。
-----------未完·待续