Last Update: 08.02.2018. By Jens in Newsletter | Spring Boot
Spring Boot is not only for server applications. Did you know you can write command line apps too?
We can do so in two simple steps.
First, we must code a class implementing the CommandLineRunner interface. It has just one method run which is executed by Spring Boot once. It contains our logic what to do.
Second, we must add that class to the Spring Context as any other regular Spring bean.
Example:
@SpringBootApplication
public class CmdRunnerApplication implements CommandLineRunner {
public static void main(String[] args) {
new SpringApplicationBuilder(CmdRunnerApplication.class).web(false).run(args);
}
@Override
public void run(String... arg0) throws Exception {
System.out.println("Run");
}
}
The CommandLineRunner is executed on startup by Spring Boot, and it is even executed when we build a web app and start a Tomcat. Besides writing command line apps, we could use it also to run code at startup once.
The mechanism also supports multiple CommandLineRunner at the same time. They are all executed in order; usually, as they were picked up by the Spring context. With setting the @Order annotation on our CommandLineRunner implementation, we can override that.