微人事第四天:springboot实现系统启动任务
程序员文章站
2022-04-30 22:43:02
...
系统启动任务指的是:有一些事情我们希望在系统启动的时候去做,以后就不用做了,只在启动的时候去做一次。
spring boot中提供了CommandLineRunner来实现系统启动任务,下面来演示一下:
1.定义两个CommandLineRunner类来作为系统启动时执行的内容
package org.javaboy.commandlinerunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
@Order(99)
public class MyCommandLineRunner1 implements CommandLineRunner {
//系统执行的时候执行这个方法
//参数是启动类中的arges
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner1>>>" + Arrays.toString(args));
}
}
package org.javaboy.commandlinerunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
//@Order表示优先级,里面的数字越大表示优先级越低
@Order(98)
public class MyCommandLineRunner2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner2>>>" + Arrays.toString(args));
}
}
可以看出这两个类通过实现 CommandLineRunner接口来实现系统启动任务。@order()表示优先级,因为如果你配置多个 CommandLineRunner的类,有执行先后顺序区别,优先级就是来控制哪个先执行,哪个后执行。run方法中的args就是启动类中的args。
2.配置args参数的内容
初始状况下args的值是为空的,现在我们来添加内容
点击Edit Configurations
在program arguments中编写参数内容
3.现在来启动一下
可以看出,启动之后MyCommndLineRunner2先执行(因为这里面优先级更高),参数也就是我们之前编辑的内容。
现在参数是写死的,我们也可以通过打成jar包来动态编辑参数。
在Maven下先关闭test,然后双击package打成jar包在target目录下。
然后再控制台下执行方法:java -jar commandlinerunner-0.0.1-SNAPSHOT.jar javaboy www.javaboy.org
也可以成功执行
这里和之前的区别是这里的参数是动态编写的,之前是固定写死的。
上一篇: 微人事第四天:自定义异常视图