程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring的元數據支持

Spring的元數據支持

編輯:關於JAVA

為了與它提供的其他重要概念的抽象相一致,Spring提供了一個對元數據實現的外觀(facade), 以org.springframework.metadata.Attributes這個接口的形式來表示。

這樣一個外觀很有價值,因為下面幾個原因:

目前還沒有一個標准的元數據解決方案。 Java 1.5版本會提供一個,但是在Spring1.0版本的時候, Java 1.5仍是beta版本。而且,至少兩年內還是需要對1.3和1.4版本的應用程序提供元數據支持。 現在Spring打算提供一些可以工作的解決方案: 在一個重要的環境下等待1.5,並不是個好的選擇.

目前的元數據API,例如Commons Attributes(被Spring 1.0使用), 測試起來很困難。Spring提供了一個簡單的更容易模擬的元數據接口。

即使當Java 1.5在語言級別提供了對元數據的支持時,提供了一個如此的抽象仍然是有價值的:

JSR-175的元數據是靜態的。它是在編譯時與某一個類關聯,而在部署環境下是不可改變的。 這裡會需要多層次的元數據,以支持在部署時重載某些attribute的值--舉例來說, 在一個XML文件中定義用於覆蓋的attribute。

JSR-175的元數據是通過Java反射API返回的。這使得在測試時無法模擬元數據。Spring提供了一個簡單的接口來允許這種模擬。

雖然Spring在Java 1.5達到它的GA版本之前將支持JSR-175,但仍會繼續提供一個attribute抽象API。

Spring的Attributes接口看起來是這樣的:

public interface Attributes {
Collection getAttributes(Class targetClass);
Collection getAttributes(Class targetClass, Class filter);
Collection getAttributes(Method targetMethod);
Collection getAttributes(Method targetMethod, Class filter);
Collection getAttributes(Field targetField);
Collection getAttributes(Field targetField, Class filter);
}

這是個最普通不過的命名者接口。JSR-175能提供更多的功能,比如定義在方法參數上的attributes。 在1.0版本時,Spring目的在於提供元數據的一個子集,使得能象EJB或.NET一樣提供有效的聲明式企業級服務。1.0版本以後,Spring將提供更多的元數據方法。

注意到該接口像.NET一樣提供了Object類型的attibute。 這使得它區別於一些僅提供String類的attribute的attribute系統, 比如Nanning Aspects和JBoss 4(在DR2版本時)。支持Object類型的attribute有一個顯著的優點。它使attribute含有類層次,還可以使attribute能夠靈活的根據它們的配置參數起作用。

對於大多數attribute提供者來說,attribute類的配置是通過構造函數參數或JavaBean的屬性完成的。Commons Attributes同時支持這兩種方式。

同所有的Spring抽象API一樣,Attributes是一個接口。這使得在單元測試中模擬attribute的實現變得容易起來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved