您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java中依賴注入框架的元注解是怎么實現的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
寫兩個自定義注解,一個叫@Virtual元注解,一個叫@Real注解,把@Virtual放在@Real上,把@Real放到一個User類上,看看編譯結果,然后用反射從這個類上取@Virtual,看@Real能不能自動引導到@Virtual上。示例代碼如下:
@Retention(RetentionPolicy.RUNTIME) public @interface Virtual { } @Virtual @Retention(RetentionPolicy.RUNTIME) public @interface Real { } @Real public class User { }
編譯后用IDE查看class文件,發現@Virtual元注解仍然只標在@Real上,User類上只標有@Real注解,可證明編譯器沒有為元注解做什么工作。然后反射的結果也是不能從User類拿到@Virtual,可證明JVM runtime也沒有為元注解做什么工作。因此@Qualifier的元注解特性極有可能是相關框架自行實現的。
要怎么實現呢?我們可以自己動腦筋想一想。考慮到,Spring框架掃描所有的class文件(之所以要掃描class文件而非class對象,是因為Java不提供遍歷所有class對象的功能,使框架不得不重復實現對class文件的解析工作),將其中有相應注解的class轉化為BeanDefinition注冊到BeanFactory。那么@Qualifier也可以類似地處理,對于掃描到的class,如果它具有@Qualifer注解,并且自身也是注解(實現了java.lang.Annotation interface),就作為一個自定義注解注冊到框架里(比如說,QualifierAnnotationRegistry?),如此一來框架就認識所有的包含@Qualifier元注解的自定義注解了,之后要使用就順理成章了。
關于Java中依賴注入框架的元注解是怎么實現的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。