Spring注解@Order的使用

@Order:注解@Order不能决定Spring容器加载Bean的顺序,只能决定执行顺序

1,注解类源码
@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;

}
2,常量类
public interface Ordered {

	/**
	 * Useful constant for the highest precedence value.
	 * @see java.lang.Integer#MIN_VALUE
	 */
	int HIGHEST_PRECEDENCE = Integer.MIN_VALUE;

	/**
	 * Useful constant for the lowest precedence value.
	 * @see java.lang.Integer#MAX_VALUE
	 */
	int LOWEST_PRECEDENCE = Integer.MAX_VALUE;

	int getOrder();

}

注解可以作用在类、方法、字段声明(包括枚举常量);
注解有一个int类型的参数,可以不传,默认是最低优先级;
通过常量类的值我们可以推测参数值越小优先级越高;

3,代码测试
@Configuration(proxyBeanMethods = false)
public class CatConfig {

    @Bean
    @Order(3)
    public Cat cat1(){
        System.err.println("order1------>");
        return new Cat("cat1()");
    }


    @Bean
    @Order(2)
    public Cat cat2(){
        System.err.println("order2------>");
        return new Cat("cat2()");
    }

    @Bean
    @Order(1)
    public Cat cat3(){
        System.err.println("order3------>");
        return new Cat("cat3()");
    }

    @Bean
    public Cat Cat4(List<Cat> cat){
        cat.forEach(s ->System.out.println(s.getName()));
        return cat.get(1);
    }
}


启动项目:
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值