实现 CommandLineRunner 接口,run里面的方法却没有执行.

场景:项目中有多个需要项目启动后配置的东西使用CommandLineRunner 进行初始化
问题:只执行其中1/N个,不再执行后续的CommandLineRunner

      **分析:** 多个CommandLineRunner 执行的时候是线性的,并非多线程执行.所以 `@order`才有效,应该是阻塞在某一个CommandLineRunner 里面了,
    比如 for/while循环,netty服务器等等.

解决问题:排查出执行到那个CommandLineRunner 开始阻塞的,有两个解决方案

方案1:将之放到最后执行,使用@order进行标记顺序,spring boot按从小到大执行
方案2:使用异步进行执行,这样就不会阻塞线程了

你可能感兴趣的:(实现 CommandLineRunner 接口,run里面的方法却没有执行.)