Spring @Order 注解


#Spring#


@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 排序。


( 本文完 )