欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

58同城开源web框架 Argo (二)

程序员文章站 2024-02-01 23:04:28
...

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也不介绍了

 

以上某些猜测全是个人看法,以后慢慢读代码再验证一下 :)