SSH1还是SSH2与Annotation还是Xml配置的问题

这个问题是没有绝对的优点和缺点的。

    有人喜欢说:我就爱用SSH2,因为都是最新的,我也喜欢用全annotation的方式来编程,因为这样做比较潮流,比较优雅。但是。。。。。。这些都不是真正的justification。

    对于在框架选型时,不仅仅是开发者自己喜欢不喜欢的问题,就和有人说:开发者们永远喜欢推倒重做,永远喜欢开发新项目而对于修修改改维护类项目感冒是一个道理。

试想,大部分的金融保险客户,他们的系统都是有一定的年头了,而且像这样的企业中的一个IT项目是不可能跟着潮流经常去变化的,因为这些企业中的IT项目或者我们称作IT资产涉及到数据、机密性、稳定性,一旦这个项目自上线之日起它就一直在稳定的运行了,除非是重大变故一般是不会轻易去改它的架构或者是核心的,一般都是围绕着己有项目来进行扩展和维护,因此这些企业中的J2EEAPP Server或者是JDK版本都不一定是最新的。

比如说有些银行到现在还一直在用was6.1,或者是weblogic9.x,更有甚者还在用jdk1.4,如果这时你在接手项目时不去了解企业的现状况,一拍脑袋说:我们用SSH2吧!结果你的项目做完后连上线都无法上线,到那时就不仅仅是再让你重构的问题了,呵呵,对吧.

你不要试图去和客户解释说:唉呀你怎么还在用WAS5.1,你怎么还在用Tomcat5.5啊,我给你搞个tomcat6.x也行,把你的JDK装成1.6吧,呵呵,千万不要这么做。

客户可以告诉你,它的服务器是小型机,上百万元购买来的,购买小型机时赠送了WAS5.1因此在上面有许多的应用且已经使用了5年之久了,现在你为了说你的框架是STRUTS2而逼着客户升级JDK和WAS版本,如果万一有问题了,出错了,导致了客户的实时交易延误而引起的经济损失,你能支付得起吗?如果你说因为我们的环境而不能使用你们的框架,那么对不起,我们公司不会采用你方的架构。呵呵!!

框架的目的在于最大程度上减化一些底层的,重复性的劳动,把对数据库的访问,对resource等的访问从程序员的实际工作中分离出来,使程序员有更多的时间去关注“业务逻辑”——摘自2001版的《EJB2从入门到精通》。所以在实际工作中不能够为了用框架而用框架。

好比,我用Annotation写DAO是很方便,很优雅,但是你有没有想过,当你的SQL如果是经常需要变,或者是需要通过外部动态传入的时候甚至允许客户自己构建SQL再传给我们的DAO的场景下,那么对于我们来说只需要改改SQL逻辑重新启动一下服务器就可以实现的而因为你用了全部基于Annotation的框架,我甚至需要去动我们的代码,要知道代码不管你动了多少哪怕你只是加了一个注释也是需要按照流程来重新测试、重新打包的。因为没有人敢保证你的改动不引起regressionbug。所以这时把sql或者一些配置写成xml或者是properties的外部配置形式要比你用annotation来得更灵活,这就是我在第十八天的spring+jdbcTemplate时为什么喜欢把SQL写在XML里再通过spring注入到DAO层的原因。因为你的SQL不是一次写成的,就算是一次写成,你的工程在将来也会面临SQL调优这么一个过程,到时你每改动一次SQL,就要动一次代码层,而你的改动可能只是把in变成了=或者是把innerjoin改成hashjoin,那么此时我的SQL如果是配置在外部配置文件中的话我改起来是不是更方便?尤其是一些涉及到大数据量出报表的SQL是经常面临调优的。

Struts2是基于filter框架的,你可以使用它的filter,你甚至可以不用去使用spring而直接使用struts2或者使用spring的MVC而抛弃struts2,都是没问题的,没有什么所谓“不正统/正统”框架之说。好比我有一个servlet叫LoginFilter,这个filter诞生在8年前,经历了好几个项目了已经是非常稳定了,因此当我碰到了struts2的框架时我不是说因为struts2的技术新我就必须全部用struts2来重做我的feature,稳定性重用性在哪里?我既然手上有一个这么稳定的历经了好几年的一些个组件,虽然它们历史久远了些可是我也是照用不误,原因就在于它稳定实用。

说了这些,主要的目的还是要告诉大家,框架和设计模式是一样的,它只是在最大程度上解放你的生产力,减少你的重复劳动,避免了不要去重复造轮子。不要为了框架而框架,不要被框架套死。好比刚练武时,一招一式都要照着书本和师傅的样子去学,但是真正的武功高手是什么样的呢?“无招胜有招”,对不对?活用活用,要把框架和模式为你所用而不是做框架的奴隶。

这也是我为什么强调框架而不仅仅是强调SSX体系的原因,其实在我的SSX框架中还经常可以看到一些古老的jstl,servlet的存在,我的目的就在于充分利用各个技术的优点,把各个技术各个框架的优点集中起来使用这样才能搭出一本葵花宝典来。

你可能感兴趣的:(Annotation还是Xml)