启动时运行,CommandLineRunner,InitializingBean

版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/82012915

实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 
为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。

很简单,只需要一个类就可以,无需其他配置。 
创建实现接口 CommandLineRunner 的类

@Component  //不添加@Component则不会运行该代码
//@Order(1) //与@Order(value = 1)同义
@Order(value = 1) //指定先后加载的顺序
public class StarterClass1 implements CommandLineRunner {
    private static final Logger logger = LoggerFactory.getLogger(StarterClass1.class);

    @Override
    public void run(String... args) throws Exception {
        logger.info("StarterClass1...");
    }
}
@Component  //不添加@Component则不会运行该代码
@Order(value = 2) //指定先后加载的顺序
public class StarterClass2 implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(StarterClass2.class);

    @Override
    public void run(String... args) throws Exception {
        logger.info("StarterClass2...");
    }
}

实现InitializingBean接口也能实现启动时加载运行的功能

@Component
public class StarterClass3 implements InitializingBean {

    private static final Logger logger = LoggerFactory.getLogger(StarterClass3.class);

    @Override
    public void afterPropertiesSet() throws Exception {
        logger.info("StarterClass3...");
    }
}

会发现InitializingBean的运行比CommandLineRunner运行的早

参考:https://blog.csdn.net/catoop/article/details/50501710  Spring Boot 启动加载数据 CommandLineRunner

猜你喜欢

转载自blog.csdn.net/u010002184/article/details/82012915