Spring @Order注解的使用


注解@Order或者接口Ordered的作用是定義Spring IOC容器中Bean的執行順序的優先級,而不是定義Bean的加載順序,Bean的加載順序不受@Order或Ordered接口的影響;

1.@Order的注解源碼解讀

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Documented
public @interface Order {

    /**
     * 默認是最低優先級,值越小優先級越高
     */
    int value() default Ordered.LOWEST_PRECEDENCE;

}
  • 注解可以作用在類(接口、枚舉)、方法、字段聲明(包括枚舉常量);
  • 注解有一個int類型的參數,可以不傳,默認是最低優先級;
  • 通過常量類的值我們可以推測參數值越小優先級越高;

2.Ordered接口類

package org.springframework.core;

public interface Ordered {
    int HIGHEST_PRECEDENCE = -2147483648;
    int LOWEST_PRECEDENCE = 2147483647;

    int getOrder();
}

在spring內部,對基於spring xml的應用,spring使用OrderComparator類來實現排序。對基於注解的應用,spring采用AnnotationAwareOrderComparator來實現排序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM