Webx是一个在阿里巴巴集团内部广泛使用的,层次化、模块化的一个Web框架。 Webx是基于经典MVC设计模式的WEB框架,推崇页面驱动和约定胜于配置的理念。 Webx是一个基于Spring的组件框架。组件是一个软件包,它可以被其它组件扩展,也可以扩展其它组件。利用这些特性,Webx不仅能够用来开发高度可定制的Web应用(这是它的主要功能),也能够用来帮助你开发高度可扩展的非WEB的应用
webx框架官方文档:http://openwebx.org/
webx框架的的层次
SpringExt:基于Spring,提供扩展组件的能力。它是整个框架的基础。
Webx Framework:基于Servlet API,提供基础的服务,例如:初始化Spring、初始化日志、接收请求、错误处理、开发模式等。Webx Framework只和servlet及spring相关 —— 它不关心Web框架中常见的一些服务,例如Action处理、表单处理、模板渲染等。因此,事实上,你可以用Webx Framework来创建多种风格的Web框架。
Webx Turbine:基于Webx Framework,实现具体的网页功能,例如:Action处理、表单处理、模板渲染等。
我们在使用webx框架的时候,可以使用整个框架,也可以只使用webx框架中的部分。
比如说可以只使用SpringExt。
仅使用SpringExt及Web组件,在此基础上运行Spring MVC、Struts等非webx框架。
仅使用Webx Framework,创造新的Web框架
使用整个Webx框架,定制Turbine
在应用启动的时候,会加载一个Spring容器到内存中,并且默认的在容器中添加一些用于服务的Service Bean,这些Service Bean会通常在整个生命周期中存在并提供各项服务。对于不同的层次,其Service会有各种不同的扩展,
比如在SpringExt层次中有用于加载资源的ResourceLoaderService
,
在Webx Framwork层次中扩展了用于控制整个应用流程的Pipeline Service
,
在Webx Turbine层次中又扩展了用于加载模块的ModuleLoaderService
。
这些service都会有与其对应的Service Bean
在Spring容器加载的时候被添加到Spring容器中,有时候这些Service Bean也会被注入到应用中具体的Bean中去,为其提供服务。
是不是在webx中不可以配置aop呢?我在webx.xml中配置了<aop:aspectj-autoproxy />,然后申明了切面和通知,但是测试时没有执行到这个通知,而且我把匹配通知的execution改为了不存在的包下,发现跑起来居然没有报错,是不是在加载的时候没有将aop当成bean加载进webx容器中?