?
Ce document utilise Manuel du site Web PHP chinois Libérer
目錄
Required
源代碼級的元數(shù)據(jù)通常是對類或方法這樣的程序元素的屬性或注解的補(bǔ)充。
舉例來說,我們可以象下面這樣給一個(gè)類添加元數(shù)據(jù):
public class PetStoreImpl implements PetStoreFacade, OrderService {
我們也可以像下面這樣為一個(gè)方法添加元數(shù)據(jù):
public void echoException(Exception ex) throws Exception { .... }
這兩個(gè)例子都使用了Jakarta Commons Attributes的語法。
源代碼級的元數(shù)據(jù)隨著XDoclet(在Java世界中)和Microsoft的.NET平臺的發(fā)布被引入主流, 后者使用了源代碼級的屬性來控制事務(wù)、緩沖池(pooling)和一些其他的行為。
J2EE社區(qū)已經(jīng)認(rèn)識到了這種方法的價(jià)值。舉例來說,跟EJB中專用的傳統(tǒng)XML部署描述文件比起來它要簡單很多。 與人們樂意做的把一些東西從程序源代碼中提取出來的做法相反,一些重要的企業(yè)級設(shè)置 - 特別是事務(wù)特性 - 應(yīng)該屬于程序代碼。 并不像EJB規(guī)范中設(shè)想的那樣,調(diào)整一個(gè)方法的事務(wù)特性基本沒有什么意義(盡管像事務(wù)超時(shí)這樣的參數(shù)可能改變)。
雖然元數(shù)據(jù)屬性主要用于框架的基礎(chǔ)設(shè)施中,來描述應(yīng)用程序的類所需要的服務(wù),但是它也可以在運(yùn)行時(shí)被查詢。 這是它與XDoclet這樣的解決方案的關(guān)鍵區(qū)別,XDoclet主要把元數(shù)據(jù)作為生成代碼的一種方式,比如生成EJB類。
下面有幾種解決方案,包括:
標(biāo)準(zhǔn)Java注解:標(biāo)準(zhǔn)Java元數(shù)據(jù)實(shí)現(xiàn)(作為JSR-175標(biāo)準(zhǔn)被開發(fā)并可在 Java 5中找到)。 Spring已經(jīng)在事務(wù)劃分、JMX和切面(準(zhǔn)確地說它們是AspectJ的注解)中支持Java 5注解。 不過, 既然Spring也支持Java 1.4,我們?nèi)孕枰粋€(gè)JVM不同版本間的解決方案。Spring元數(shù)據(jù)支持就提供了這樣一個(gè)方案。
XDoclet:成熟的解決方案,主要用于代碼生成。
在多種不同的針對Java 1.4的開源屬性實(shí)現(xiàn)中,Commons Attributes看起來是最完整的實(shí)現(xiàn)。 所有的這些實(shí)現(xiàn)都需要一個(gè)特定的前置編譯或后置編譯的步驟。