java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > CommandLineRunner的使用

关于CommandLineRunner的使用详解

作者:LBL_lin

本文介绍了如何在SpringBoot项目启动时使用CommandLineRunner和ApplicationRunner接口进行数据预加载或操作,通过实现这两个接口,可以在项目启动时执行特定的任务,同时,还展示了如何使用@Order注解来控制多个实现类的加载顺序

背景

在项目启动时需要做一些数据预加载或者某些操作,需要怎么办呢,方法其实有好几种,这里主要讲一下SpringBoot提供的CommandLineRunner接口的使用。

案例说明以及实现

1.实现CommandLineRunner接口

package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class WebStart implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart ---------------");
    }
}
package com.lbl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Slf4j
@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        log.info("------------- before ---------------");
        SpringApplication.run(SpringbootDemoApplication.class, args);
        log.info("------------- after ---------------");
    }

}

2.加载的顺序

package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@Order(2)
public class WebStart implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart ---------------");
    }
}
package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@Order(1)
public class WebStart2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart2 ---------------");
    }
}

3.扩展-ApplicationRunner

package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class WebStart3 implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("------------- WebStart3 ---------------");
    }
}

此时注掉前面两个实现类的@Order()注解

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文