有一些特殊的任务需要在系统启动时执行,例如配置文件加载、数据库初始化等操作。如果没有使用 Spring Boot,这些问题可以在 Listener 中解决。Spring Boot 对此提供了两种解决方案:CommandLineRunner 和 ApplicationRunner。CommandLineRunner 和 ApplicationRunner 基本一致差别主要体现在参数上。
java">import org.springframework.boot.CommandLineRunner;import java.util.Arrays;
@Component
@Order(1)
public class MyCommandLineRunner1 implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("Runner1>>>"+Arrays.toString(args));}
}
java">import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Set;/*** Created by sang on 2018/7/14.*/
@Component
@Order(1)
public class MyApplicationRunner2 implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {List<String> nonOptionArgs = args.getNonOptionArgs();System.out.println("2-nonOptionArgs>>>" + nonOptionArgs);Set<String> optionNames = args.getOptionNames();for (String optionName : optionNames) {System.out.println("2-key:" + optionName + ";value:" +args.getOptionValues(optionName));}}
}java -jar linerunner-0.0.1.jar --name=Michael --age=99 三演义罗贯中