在創(chuàng)建EJB組件時,必需提供一些定義,使得EJB組件使用一些服務(wù)例如:安全服務(wù),持久化服務(wù),事務(wù)服務(wù)。EJB容器可以提供這些服務(wù),這樣EJB只要實現(xiàn)業(yè)務(wù)邏輯就可以了。但是說到底EJB容器使用EJB組件的元數(shù)據(jù)來提供這些服務(wù),在以前EJB的元數(shù)據(jù)是以xml配置文件形式出現(xiàn)的,這些配置文件與EJB源文件是分開的。
EJB的部署人員無法了解EJB本身的信息,假如EJB組件的創(chuàng)建者用注釋(Annotation)的方法將這些配置服務(wù)的信息和代碼放在一起,這樣EJB的部署者就可以了解EJB的信息,EJB的home接口可以使用Annotation自動生成,當(dāng)然到目前為止更好的是在簡單的java Object上使用Annotations。
一 什么是Annotation
在已經(jīng)發(fā)布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一種機(jī)制,將程序的元素如:類,方法,屬性,參數(shù),本地變量,包和元數(shù)據(jù)聯(lián)系起來。這樣編譯器可以將元數(shù)據(jù)存儲在Class文件中。這樣虛擬機(jī)和其它對象可以根據(jù)這些元數(shù)據(jù)來決定如何使用這些程序元素或改變它們的行為。
二 定義一個簡單的Annotation并使用它
1.定義Annotation
定義一個Annotation是什么簡單的,它采取的是類似于Interface的定義方式: “@+annotation類型名稱+(..逗號分割的name-value對...)”
//Example 1@Retention這個meta-annotation表示我們創(chuàng)建的SimpleAnnotation這個Annotation將會存儲在Class文件中,并在java
VM運(yùn)行時加載它。@Target這個meta-annotation表示我們創(chuàng)建的SimplwAnnotation將會為描述方法,而@interface SimpleAnnotation是我們自定義的Annotation,它有一個成員叫value,返回值是String。
2.使用Annotation
//Example 2一個Annotation用于程序元素(在本例中是method),在method方法之前用(@Annotation名稱(name=value,name=value.....)。在本例中是@SimpleAnnotation(value="Pass:This method will Pass")。每個annotation具有一個名字和成員個數(shù)>=0,當(dāng)只有一個單一的成員時,這個成員就是value。我們也可以這樣寫 @SimpleAnnotation("Fail:This method will Fail")。至此@SimpleAnnotation將Pass和Fail聯(lián)系起來了。
3.在運(yùn)行時訪問Annotation
一旦Annotation與程序元素聯(lián)系起來,我們可以通過反射訪問它們并可以取得它們的值。我們使用一個新的interface:java.lang.reflect.AnnotatedElement。java.lang.reflect.AnnotatedElement接口中的方法有:
新聞熱點
疑難解答