在这段配置中,<loaders:database-loader>
标签通知SpringExt:将database-loader
的实现注入到resource-loading
的服务中。这种对应关系是如何建立起来的呢?
在XML里,loaders
前缀代表namespace:“http://www.alibaba.com/schema/services/resource-loading/loaders
”;但对SpringExt而言,它还代表一个更重要的意义:扩展点,或称为ConfigurationPoint。ConfigurationPoint将namespace和可扩展的ResourceLoader
接口关联起来。
在XML里,database-loader
代表一个XML element;但对SpringExt而言,它还代表一个更重要的意义:捐献,或称为Contribution。Contribution将element和对ResourceLoader
接口的具体扩展关联起来。
2.2.2. 扩展点,Configuration Point
SpringExt用“扩展点,Configuration Point”来代表一个可被扩展的接口。每个扩展点都:
-
对应一个唯一的名称,例如:
services/resource-loading/loaders
。 -
对应一个唯一的namespace,例如:
http://www.alibaba.com/schema/
services/resource-loading/loaders
。 -
对应一个唯一的schema,例如:
services-resource-loading-loaders
.xsd
。
2.2.3. 捐献,Contribution
SpringExt把每一个对扩展点的具体扩展称作“捐献,Contriubtion”。每个捐献都:
-
在对同一扩展点的所有捐献中,拥有一个唯一的名字,例如:
file-loader
,webapp-loader
,database-loader
等。 -
对应一个唯一的schema,例如:
-
services/resource-loading/loaders/
file-loader
.xsd
-
services/resource-loading/loaders/
webapp-loader
.xsd
-
services/resource-loading/loaders/
database-loader
.xsd
-
表 4.1. Webx Turbine映射规则
映射规则 | 说明 |
---|---|
将URL映射成target | target是一个抽象的概念,指明当前请求要完成的任务。Target由pipeline来解释,它可能被解释成模板名,也可能被解释成别的东西。 |
将target转换成模板名 | 模板用来展现页面的内容。Velocity、Freemarker、JSP都可以作为模板的格式,但在Webx建议使用velocity模板。 |
将target转换成layout布局 | 你可以为一组页面选择相同的布局(菜单、导航栏、版权信息等),为另一组页面选择另一种布局。 |
将target转换成module | 在Webx Turbine中,module是指screen、action、control等,大致相当于其它框架中的action或者controller。 |
工程师只需要根据上述规则,将模板放在指定的目录、按照预定的方式命名module(也就是screen、action、control等),就不再需要额外的配置。