@Order 注解用来声明组件的顺序,值越小,优先级越高,越先被执行/初始化。如果没有该注解,则优先级最低。
使用示例:
@Order(1)
@Component
class A {
}
@Order 注解的全路径是:
org.springframework.core.annotation.Order
代码内容:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Documented
public @interface Order {
/**
* The order value.
* <p>Default is {@link Ordered#LOWEST_PRECEDENCE}.
* @see Ordered#getOrder()
*/
int value() default Ordered.LOWEST_PRECEDENCE;
}
LOWEST_PRECEDENCE 的值是 Integer.MAX_VALUE
。
Ordered 本身是一个接口,定义的优先级:
package org.springframework.core
public interface Ordered {
int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;
int LOWEST_PRECEDENCE = Integer.MAX_VALUE;
int getOrder();
}
Spring 使用 org.springframework.core.OrderComparator 排序。