论SSH框架 —— 一个狮子座程序员的大言不惭!
论SSH框架 —— 一个狮子座程序员的大言不惭!
SSH和Leopard深入对比
记得很多很多年前,在Java Web开发的世界里,SSH(Struts、Spring、Hibernate、)这个框架是很火的?火到什么程度呢?在当时你如果说不懂SSH,你都不好意思说你是搞Java Web发的。现在回想起来,这个框架实在是太过扯蛋!而且扯得蛋很疼!导致至今仍有很多很多Java Web开发者前扑后继的去学习这个架构!
我是一个写了很多年程序的老程序员,我对这个现象感到很痛心!仅仅是因为我们的程序员同学都太过依赖旧的技术,不愿与时俱进!
下面我们来分析SSH为什么会这么流行?又怎么样来改变这个现状?
Struts是MVC模式web框架公认的标准,在Spring还没有出来的时候。Struts已经很流行了,大大小小的web项目都使用struts进行开发,这为后来的SSH框架垫定了稳固的江山。
后来,Spring出来了,他宣传的是依懒注入和控制反转,把主要精力放到了如何在模块之间解耦上去了。很多框架师也确实认同Rod Johnson,纷纷也将Spring引入到了项目中去。而Hibernate在持久化上也确实做到了很成功,因此桃园结义就此拉开!SSH一个强大的框架,就此诞生!Struts 负责MVC,Spring负责解耦,Hibernate负责数据持久化,分工明确!各自在自己的地旁上呼风唤雨!
SSH这个框架,看似很好?但我却认为很复杂。为什么一个人能干好的活,非要交给三个人干呢?这里也许是包含各种历史原因,也许是因为太多的程序员的惰性思维。不管怎么样,我认为程序员应该创新,应该与时具进!
直到有一天,我看到了一个很牛逼的网站http://leopard.io/。作者开发了一个叫作Leopard的框架。这个框架基于Spring开发,在Spring MVC、Spring JDBC上做了深入的封装,将困扰众多WEB开发者的问题,一一化解!
我深入研究了这个框架,并对SSH和Leopard进行了一个深入的对比:
SSH,我就用一句话来描述:使用了各框架之所长!
Leopard,我想深入列举一下:
WEB MVC功能
1、使用Spring MVC框架,在原有功能上封装了多个数据视图。比如有返回Json数据的视图、返回文本数据的视图、返回分页数据的视图、返回ftl数据的视图等等。
2、实现自定义关键参数(参见我的博客http://wsppkdc.iteye.com/)。
3、对int、boolean、long型对象为空值时进行了转换。
4、实现智能登录验证扫描。
5、内置自定义拦截器,可实现自定义功能。
6、实现分布式session,开放自如。
7、实现自定义登录验证组件,开放验证接口支持自定义实现登录验证及登录界面。
8、实现防并发组件,可以在指定时间限制接口访问次数。
9、实现验证码组件,可支持多组验证码分组验证。
10、实现方法耗时监控、数据源(MySQL、Redis、Memcached等)请求统计。
11、实现CSRF、XSS安全漏洞防范。
以上web功能,开箱即用。不想用的时候,关闭即可。
持久化功能
1、封装Spring JDBC实现,Hibernate号称的方便牵移,我想已经毫无用武之地了。因为Leopard不仅仅在实现上做了工作,还在设计上给了建议。建议所有数据库操作均使用单表操作(如果你认为做不到,可以直接找作者帮忙,而且还是免费的,这使我对作者肃然起敬!!!)。
2、封装了Redis缓存实现,Hibernate的缓存,又被打趴了。
3、对JDBC、Redis配置连接池,仅仅一行标签搞定!
解耦功能
1、依然采用Spring的解耦功能。
其他组件
1、实现了Jetty热部署。这个是相当牛擦的,启动web应用。只要运行一个JettyTest类即可。而且支持热部署,改完代码不需要重启。
2、智能配置mvc resources,为了提高静态文件的访问速度。Leopard会自动将静态文件转换为Spring 的Resource,请求时不需要再进入Controller。
3、自定义标签,简化XML编写。
4、内置Tson数据结构简化Model构造,使单元测试编写变得相当简单。
5、开放可扩展接口。
6、制定开发规范,简化项目交结。
7、智能化日志配置。
8、….
太多太多的新玩艺了,还是自己上http://leopard.io/上去看吧。作者已经将源码、示例代码全部开源出来了。我认为此框架值得学习,也许它将带来另一个春天!