在這段配置中,<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等),就不再需要額外的配置。