SpringBoot项目预加载数据——ApplicationRunner、CommandLineRunner、InitializingBean 、@PostConstruct区别 世界速看
2023-05-17 16:13:04 博客园


(资料图)

0、参考、业务需求

1、方式

2、@Order

3、测试使用

@Component@Order(3)public class App01 implements ApplicationRunner {    @Override    public void run(ApplicationArguments args) throws Exception {        System.out.println("App01_执行了……@Order(3)");    }}
@Component@Order(2)public class App02 implements ApplicationRunner {    @Override    public void run(ApplicationArguments args) throws Exception {        System.out.println("App02_执行了……@Order(2)");    }    }
@Component@Order(1)public class Com01 implements CommandLineRunner {    @Override    public void run(String... args) throws Exception {        System.out.println("Com01_执行了……@Order(1)");    }}
@Component@Order(0)public class Com02 implements CommandLineRunner {    @Override    public void run(String... args) throws Exception {        System.out.println("Com02_执行了……@Order(0)");    }}
/** @Order没用 * @author CC * @since 2023/5/17 0017 */@Component@Order(7)public class Ini01 implements InitializingBean {    @Override    public void afterPropertiesSet() throws Exception {        System.out.println("Ini01_执行了……@Order(7)");    }}
/** @Order没用 * @author CC * @since 2023/5/17 0017 */@Component@Order(4)public class Ini02 implements InitializingBean {    @Override    public void afterPropertiesSet() throws Exception {        System.out.println("Ini02_执行了……@Order(4)");    }}
/** @Order没用 * @author CC * @since 2023/5/17 0017 */@Component@Order(6)public class Pos01 {    @PostConstruct    public void customizeName(){        System.out.println("Pos01_执行了……@Order(6)");    }    }
/** @Order没用 * @author CC * @since 2023/5/17 0017 */@Component@Order(5)public class Pos02 {    @PostConstruct    public void customizeName(){        System.out.println("Pos02_执行了……@Order(5)");    }    }

4、执行顺序、建议使用

InitializingBean > @PostConstruct > ApplicationRunner > CommandLineRunner
最新新闻: