spring註解編程模型

英語原文:https://github.com/spring-projects/spring-framework/wiki/Spring-Annotation-Programming-Model#stereotype-annotations

術語

1.元註解

元註釋是java基礎註解來聲明註解。因此,一個註解必然是被元註解而註解的。例如,任何註解被聲明都是 @Documented從java.lang.annotation包中進行元註釋的。

2.模式註解

模式註解是被用於聲明在應用程序中個一個組件的角色。例如,@Repository 註解在Spring Framework中是任何滿足存儲庫角色或構造型(也稱爲數據訪問對象或DAO)的類的標記。

@Component是任何Spring管理組件的通用模式註解。任何被 @Component 標準的組件均爲組件掃描的候選對象。類 似地,凡是被 @Component 元標註(meta-annotated)的註解,如 @Service,當任何組件標註它時,也被視作組件掃 描的候選對象。

核心Spring提供了一些模式註解開箱即用,包括但不限於:@Component,@Service,@Repository, @Controller,@RestController,和@Configuration。@Repository, @Service等等都是@Component的擴展化。

3.組合註釋

組合註解是元註解與相結合的那些元註釋相關聯成一個單一的自定義註解的行爲的意圖的一個或多個註解。例如,一個名爲@TransactionalService使用Spring裏面的 @Transactional和@Service註釋進行註解的註解是一個組合註釋,它結合了@Transactional和@Service的語義。 @TransactionalService是在技​​術上自定義的一個模式註解。

4.註釋存在

一個註解無論是直接標註還是間接標註一個bean,這個註解在java8的java.lang.reflect.AnnotatedElement類註釋中所約定的含義和特性都不會有任何改變。
在Spring框架裏面,註釋被認爲是元存在,如果註釋被聲明爲一些其他的註釋的元註釋這是一個元件上存在的元件上。例如,鑑於上述 @TransactionalService,我們可以說,@Transactional是元存在 於直接與註釋的任何類@TransactionalService。

5.屬性別名和覆蓋

一個屬性別名是從一個註釋屬性到另一個註釋屬性的別名。一組別名中的屬性可以互換使用,並視爲等效。屬性別名可以分類如下。具體介紹參見https://blog.csdn.net/qq_18975791/article/details/104209610

顯式別名:如果一個註釋中的兩個屬性被聲明爲彼此的別名@AliasFor,則它們是顯式別名。
隱式別名:如果一個註釋中的兩個或多個屬性被聲明爲元註釋中相同屬性的顯式覆蓋@AliasFor,則它們是隱式別名。
傳遞隱式別名:在一個註釋中給出兩個或多個屬性,這些屬性被聲明爲元註釋中屬性的顯式覆蓋@AliasFor,如果屬性有效地覆蓋了遵循傳遞定律的元註釋中的相同屬性 ,則它們是傳遞隱式別名。

一個屬性重寫是一個重寫(或陰影)在元註釋的註釋屬性。屬性覆蓋可以分類如下。

隱式覆蓋:給定的屬性A中的註解@One和屬性A的標註@Two,如果@One是元註解爲@Two,然後在屬性A中的註釋@One是一個隱含的倍率爲屬性A的標註@Two只在命名約定爲主(即,兩個屬性被命名A)。

顯示覆蓋:如果屬性A被聲明爲屬性的別名B在通過元註釋@AliasFor,則A是一個明確的覆蓋了B。

傳遞明確覆蓋:如果註解@One中的成員A明確覆蓋了註解@Two中的成員B,而且成員B實際覆蓋了註解@Three中的成員C,那麼因爲覆蓋的傳遞性,所以成員A實際覆蓋了成員C。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章