微人事第四天:springboot实现系统启动任务

系统启动任务指的是:有一些事情我们希望在系统启动的时候去做,以后就不用做了,只在启动的时候去做一次。
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也可以成功执行
在这里插入图片描述
这里和之前的区别是这里的参数是动态编写的,之前是固定写死的。

发布了287 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/104019334