在SpringBoot开发项目的时候,有时需要在Spring容器启动的时候执行一系列操作。在SpringBoot中提供了两个接口来实现这样的需求。
这两个接口为:CommandLineRunner和ApplicationRunner
这两个都有run方法,但是CommandLineRunner的参数为String数组,ApplicationRunner为ApplicationArguments。
CommandLineRunnerde实现
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class MyStartUpCommandLineRunner implements CommandLineRunner {
private Logger logger =LoggerFactory.getLogger(MyStartUpCommandLineRunner.class);
@Override
public void run(String... strings) throws Exception {
logger.info("------>MyStartUpCommandLineRunner<-----");
}
}
ApplicationRunner的实现
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class MYStartUpApplicationRunner implements ApplicationRunner {
private Logger logger = LoggerFactory.getLogger(MYStartUpApplicationRunner.class);
@Override
public void run(ApplicationArguments applicationArguments) throws Exception {
logger.info("------>MYStartUpApplicationRunner<------");
}
}
两个接口可以同时在一个项目中使用,存在多个的时候可以用@Order()注解来定义优先级。