簡體   English   中英

在 java 中創建和使用注釋

[英]Creating and using annotation in java

我正在審查開源 spring 項目。 我對這里使用注釋感到困惑。 我想要求澄清這一點。

@Target(ElementType.METHOD)
@Retention(RUNTIME)
@Bean
public @interface Merge {

   
    @AliasFor("targetRef")
    String value() default "";
   
    @AliasFor("value")
    String targetRef() default "";

    Placement placement() default Placement.APPEND;
   
    int position() default 0;
    
    Class<MergeBeanStatusProvider> statusProvider() default MergeBeanStatusProvider.class;

    boolean early() default false;

}

此處創建了一個名為 Merge 的注釋。 它有不同的參數和默認值。

@Configuration
public class LocalConfiguration {

    @Merge(targetRef = "mergedList", early = true)
    public List<String> blLocalMerge() {
        return Arrays.asList("local-config1", "local-config2");
    }
}

這是在我隨機選擇的任何 class 中使用@Merge注釋。

當我檢查代碼時,我找不到任何與 Merge 注釋的實現相關的 class 。 順便說一句,我遇到的這個問題不僅僅是這個注釋。 我檢查過的幾乎所有注釋都被使用而沒有以任何方式實現。 如果我們從這個注釋開始,我想我會理解其他人。 這個注解有什么作用? 它給使用它的地方帶來了什么樣的信息。 應用程序如何理解該注釋在運行時的作用而不在任何地方實現。

謝謝。

注釋沒有實現。 它們由外部類或工具根據RetentionPolicy進行處理。 在這種情況下,合並注釋具有運行時保留,因此一旦加載 class,它將通過反射可用。 在運行時,任何相關方(在這種情況下,我假設 Spring 框架)都可以在 LocalConfiguration class 上使用getAnnotations來檢測 Merge 注釋並采取任何需要采取的措施。 可能性實際上取決於定義注釋的框架。 許多 Spring 注入與注釋類似,但它們也被許多其他框架使用,如 Hibernate、Jersey 等。主要思想是外部實體在以后的特定代碼點上用作標記觀點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM