springboot

SpringBoot--实战开发--启动类(四)

2019-05-06  本文已影响52人  无剑_君

一、启动类

(一)启动类CommandLineRunner:

在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作。为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLineRunner 来实现这样的需求。
实现方式:只需要一个类即可,无需其他配置。
应用场景:
动态初始化配置。
需要在容器启动的时候执行一些内容,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,在Spring框架下是通过ApplicationListener监听器来实现的。

实现步骤:
1.创建实现接口 CommandLineRunner 的类 MyStartupRunnerTest

package com.neuedu;  
  
import org.springframework.boot.CommandLineRunner;  
import org.springframework.core.annotation.Order;  
import org.springframework.stereotype.Component;  
 
@Component  
@Order(value=1)
public class MyStartupRunnerTest implements CommandLineRunner  
{  
    @Override  
    public void run(String... args) throws Exception  
    {  
        System.out.println(">>>>This is MyStartupRunnerTest Order=1. Only testing CommandLineRunner...<<<<");  
    }  
}  

2.创建实现接口CommandLineRunner 的类 MyStartupRunnerTest2

package com.neuedu;  
  
import org.springframework.boot.CommandLineRunner;  
import org.springframework.core.annotation.Order;  
import org.springframework.stereotype.Component;  
  
@Component  
@Order(value=2)
public class MyStartupRunnerTest2 implements CommandLineRunner  
{  
    @Override  
    public void run(String... args) throws Exception  
    {  
        System.out.println(">>>>This is MyStartupRunnerTest Order=2. Only testing CommandLineRunner...<<<<");  
    }  
}  

说明:CommandLineRunner接口的运行顺序是依据@Order注解的value由小到大执行,即value值越小优先级越高。

(二)启动类ApplicationRunner

ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获取命令行参数,那就使用ApplicationRunner接口。

@Component
@Order(value = 10)
public class AgentApplicationRun2 implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments applicationArguments) throws Exception {

    }
}

(三)两者的区别:

ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获取命令行参数,那就使用ApplicationRunner接口。

上一篇 下一篇

猜你喜欢

热点阅读