spring加载类初始化顺序

今天看spring官网的时候,提到了Ordered执行顺序。我当时记得@PostConstruct注解会在bean加载后执行,现在又来了一个执行顺序,直接给我整蒙了。

于是我写了一个简单的dom来看看,它是什么:

@Service("t2ServerImpl")
//t1ServerImpl,t3ServerImpl省略。
public class t2ServerImpl implements Ordered, CommandLineRunner {
    int order = 1;

    public void print() {
        System.out.println("t2ServerImpl:" + order);
    }

    @Override
    public int getOrder() {
        return order;
    }

    @Override
    public void run(String... args) throws Exception {
        print();
    }

    @PostConstruct
    public void init() {
        System.out.println("t2ServerImpl init");
    }
}

启动springBoot打印如下:

 

后来我改了t1ServerImpl为t4ServerImp,结果它是最后加载。

加载很有意思,应该是我这个没有依赖别的bean,所以就按照顺序加载了。

如果我这样:

我在t2中依赖t4。

这个时候t4就最先加载:

说完加载问题,我们来看看 Ordered执行顺序问题,这三哥类中都实现了CommandLineRunner接口的run方法,也就是说加载完毕后,回去执行run方法。

这个时候Ordered就可以控制这三个类的执行顺序。

t2ServerImpl:1
t4ServerImpl:2
t3ServerImpl:3

直接使用@Order效果也是一样的:

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值