58同城开源的轻量级web框架 https://github.com/58code/Argo
前面简单的写了点关于Argo使用的基本方法和Demo示例,其实只要前后看两遍,是很容易上手的。更多的人还是关注为什么要做这样一个框架,以及他是否能为开发人员解决常见问题,提高工作效率。
对比Struts、Webwork、springMVC,他们提供的功能实在太多了。Struts1当前应用最广,现在还有一些遗留项目在使用。Webwork和Struts2这对孪生兄弟备受推崇,也因为树大招风,N多站点为他的潜在漏洞买单了(由于没有关闭OGNL,导致提交的参数被当做代码执行。其实厂家老早就有补丁,只是这些站点没有关注升级)springMVC 同样非常好用,是spring控的最爱,spring的强大、类库的丰富,就不在这说了。
他们都提供了底层Controller的封装,只要web.xml中添加指定的servlet、filter、listener,开发者继承后实现指定的方法就可以了。还有可配置的DI(依赖注入)功能,没有这些框架的时候,大家必须从web.xml入手,添加大量的servlet,web.xml就成为了一个维护的难点。
servlet3.0提供注解方式创建servlet,在不依赖框架的情况下,也看不到过多的配置文件,但是不代表他真的就适合大规模的开发。用框架来进行统一封装、整合公共模块、规范开发、提高开发效率才是我们要做的事情。上面说的三个框架都过于繁重,太多我们不需要的东西。应该结合项目过程中所需要的功能,抽取必要功能统一并优化处理。
首先看看那个pom.xml都依赖了哪些东西,大致也就猜出这个框架的风格 :)
com.google.guava
com.google.inject
org.javassist
org.apache.velocity
org.slf4j
log4j
org.testng
依赖很少吧,想必功能精简到极致了,而且作者有可能是google派。
spring的IOC是最常用的一个功能了,屏蔽实例化过程,由框架来管理对象的生命周期,还可以叠加使用,确实很爽。Google开源的Guice是一个更轻量级的DI框架,可参考Guice与Spring的对比 http://baike.baidu.com/link?url=sEPp_KyBC1hmvHq22NW8s4veleEgZYi6Z6bfoBnEPQvrr17B6GMzQ1Rd3OZIHl-7
guava是google内部使用的java库,每一个包都值得学习一下
org.javassist 是处理Java字节码的类库,大概能猜到一种使用场景了,java反射中拿不到方法的形参名称,用字节码就可以。所以前面一篇Path注解中的正则表达式对应的值的注入,貌似是已这种形式set进去的。
org.apache.velocity 页面模板框架,也没什么好说的,市面上使用最多的同类产品应该是freemarker吧。
剩下的log4j和testng也不介绍了
以上某些猜测全是个人看法,以后慢慢读代码再验证一下 :)