欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微人事第四天: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。
微人事第四天:springboot实现系统启动任务
2.配置args参数的内容
初始状况下args的值是为空的,现在我们来添加内容
微人事第四天:springboot实现系统启动任务
点击Edit Configurations
微人事第四天:springboot实现系统启动任务
在program arguments中编写参数内容

3.现在来启动一下
微人事第四天:springboot实现系统启动任务
可以看出,启动之后MyCommndLineRunner2先执行(因为这里面优先级更高),参数也就是我们之前编辑的内容。

现在参数是写死的,我们也可以通过打成jar包来动态编辑参数。
微人事第四天:springboot实现系统启动任务
在Maven下先关闭test,然后双击package打成jar包在target目录下。
然后再控制台下执行方法:java -jar commandlinerunner-0.0.1-SNAPSHOT.jar javaboy www.javaboy.org也可以成功执行
微人事第四天:springboot实现系统启动任务
这里和之前的区别是这里的参数是动态编写的,之前是固定写死的。

相关标签: 微人事课程