58同城开源的轻量级web框架 https://github.com/58code/Argo
今天开头说说抽象,面向对象的特点:抽象、继承、多态,好的设计都是基于优秀的抽象,抽象层次越高、越完善,他的扩展性就越好,也越容易理解。好比居家过日子,多多少少需要一些工具,可切割的、可裁剪的,这就是两个interface,于是我们准备了刀和剪子,就是一种实现。再后有了水果刀和切菜刀、园艺剪子和裁衣服剪子,这就是多态。再然对菜进行分类,把荤素分开,准备同样的两把菜刀,一把切荤的一把切素的,就是重载。
中心思想就是以特性为核心,然后一点点的实现,过程中可以对底层不同特性组合使用,但是尽量保持最高抽象级别,以便于……(你懂的)
看看ArgoFilter 的 init()方法
public void init(FilterConfig filterConfig) throws ServletException { ServletContext servletContext = filterConfig.getServletContext(); try { dispatcher = ArgoDispatcherFactory.create(servletContext); dispatcher.init(); } catch (Exception e) { servletContext.log("failed to argo initialize, system exit!!!", e); System.exit(1); } }
ArgoDispatcherFactory.create(servletContext) 进入之后看到简单的两行代码
1. GroupConvention groupConvention = GroupConventionFactory.getGroupConvention();
这句话是获取了一个默认的约定配置。Argo的配置分为组织级和项目级,组织级包括配置文件路径configFolder(),日志文件路径logFolder(),组织级Guice的注入Module module(),项目级包括项目ID id(),所有的controller类 controllerClasses(),项目级Guice的注入Module module()。
2.Argo.instance.init(servletContext, groupConvention);
这里对全局的Argo进行初始化。instance应该是一个静态实例,Argo不是用Guice么,怎么还能看见new,这种强引用的初始化方法暴露出来,难道不怕重复加载导致错误么。再去看看这个init方法。里面的onlyOnce.check();可以保证只进行一次初始化,看来是自己写的一个工具类了。
List<Module> modules = Lists.newArrayList(); modules.add(new ArgoModule(this)); Module groupModule = groupConvention.group().module(); if (null != groupModule) modules.add(groupModule); Module projectModule = groupConvention.currentProject().module(); if (null != projectModule) modules.add(projectModule);看到了吧,秘密在这里,Argo本身用的Module是ArgoModule,此外还允许开发者定义自己的Module,组织级和项目级分得很明确,就是SOA的基石,统一由Argo的Guice来管理调度。(有远见!)
this.argoDispatcher = getInstance(ArgoDispatcher.class); return argoDispatcher;init()方法返回ArgoDispatcher,ArgoDispatcher绑定的实现是com.bj58.argo.internal.DefaultArgoDispatcher,Argo用于处理请求的调度中心。看得出他的service方法 public void service(HttpServletRequest request, HttpServletResponse response) 就是处理方法了。
相关推荐
58同城的web框架 Argo ,Argo是开源的web框架,目前Argo支撑着58同城几乎所有的web站点,包括wap和手机端的访问...
Argo是开源的web框架,目前Argo支撑着58同城几乎所有的web站点,包括wap和手机端的访问等,现在wf每天处理10亿级的请求。经过长时间的运作与运行,证明Argo是一个可靠的、高效的web框架。 Argo在wf做了大量优化和...
ArgoUML-0.26开源.exe 推荐下载
代码超级干净,可以很容易地定制,很容易转化为任何类型的web应用程序,包括自定义管理面板,数据分析仪表盘,电子商务后端、CMS、CRM或任何SASS面板。 主要特色 响应布局(台式电脑、平板电脑、移动设备) 用Bootstrap...
zooviewer zookeeper web ui written in java.jsut like node-zk-web 这是一个查看zookeeper节点并可以...1,基于58开源的web框架Argo,全应用无一个配置文件。详见. 2,页业端用了jquery-tree ,方便查看zk的树状节点.
argouml一款很好的开源uml工具 中文版的
Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序
ArgoUML使用说明,官方英文版 ArgoUML是一个领先的开源UML模型工具,它支持UML 1.4的所有标准,可以运行于任何Java平台上。
ARGO入门手册1
argo源码类图,运行时序图
统一建模语言 (UML) 用于设计软件。 ArgoUML 是一个开源的 UML 编辑器。 该插件将“组件的基于上下文的约束语言(CCL)”集成到 ArgoUML 中。 在 Berlios,我们说德语 - 查看 www.cocons.or
Argo数据的说明手册
argo-UML 是开源的uml工具。 通过学习源代码来加强自己的实力。
UML argo建模工具下载,很实用的一个建模工具,方便实用,供喜欢的朋友交流使用
ArgoUML开源的uml设计软件,可以和php集成!!
ArgoUML是一个领先的开源UML模型工具,它支持UML 1.4的所有标准,可以运行于任何Java平台上。---来自《开源中国》https://www.oschina.net/p/argouml?hmsr=aladdin1e1
BGC_ARGO数据,叶绿素浓度
从官网下的ArgoUML-0.34 用来画UML图
标签:argo-2.4.jar.zip,argo,2.4,jar.zip包下载,依赖包
标签:argo-2.8.jar.zip,argo,2.8,jar.zip包下载,依赖包