博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
23. Spring Boot启动加载数据CommandLineRunner【从零开始学Spring Boot】
阅读量:6712 次
发布时间:2019-06-25

本文共 2317 字,大约阅读时间需要 7 分钟。

转:http://blog.csdn.net/linxingliang/article/details/52069503

实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 

为了解决这样的问题, Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。

很简单,只需要一个类就可以,无需其他配置。 

创建实现接口 com.kfit.runner.CommandLineRunner 的类

package com.kfit.runner;

 

import org.springframework.boot.CommandLineRunner;

import org.springframework.stereotype.Component;

 

/**

 * 服务启动执行

 *

 * @author   Angel(QQ:412887952)

 */

@Component

public class MyStartupRunner1implements CommandLineRunner {

 

    @Override

    publicvoid run(String...args) throws Exception {

        System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作<<<<<<<<<<<<<");

    }

}

 

 

Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例并运行它们的run方法。也可以利用@Order注解(或者实现Order接口)来规定所有CommandLineRunner实例的运行顺序。

如下我们使用@Order 注解来定义执行顺序。

package com.kfit.runner;

 

import org.springframework.boot.CommandLineRunner;

import org.springframework.core.annotation.Order;

import org.springframework.stereotype.Component;

 

/**

 * 服务启动执行

 *

 * @author   Angel(QQ:412887952)

 */

@Component

@Order(value=2)

publicclassMyStartupRunner1implementsCommandLineRunner {

 

    @Override

    publicvoid run(String...args) throws Exception {

        System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 11111111<<<<<<<<<<<<<");

    }

 

}

 }

package com.kfit.runner;

 

import org.springframework.boot.CommandLineRunner;

import org.springframework.core.annotation.Order;

import org.springframework.stereotype.Component;

 

/**

 * 服务启动执行

 *

 * @author   Angel(QQ:412887952)

 */

@Component

@Order(value=1)

publicclassMyStartupRunner2implementsCommandLineRunner {

 

    @Override

    publicvoid run(String...args) throws Exception {

        System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 22222222<<<<<<<<<<<<<");

    }

 

}

 

启动程序后,控制台输出结果为:

>>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 22222222 <<<<<<<<<<<<<

>>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 11111111 <<<<<<<<<<<<<

根据控制台结果可判断,@Order 注解的执行优先级是按value值从小到大顺序。

 

@Override

    publicvoid run(String... args) throws Exception {

                System.out.println(Arrays.asList(args));

        System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作11111111<<<<<<<<<<<<<");

    }

 

这里的args就是程序启动的时候进行设置的:

 

SpringApplication.run(App.class, new String[]{"hello,","林峰"});

 

这里为了做演示,配置为固定值了,其实直接接收main中的args即可,那么在运行的时候,进行配置即可。

 

 

题外话:

eclipse中给应用传args参数的方法如下:

1、先写好Java代码,比如文件名为IntArrqy.java;
2、在工具栏或菜单上点run as下边有个RunConfiguration;
3、在弹出窗口点选第二个标签arguments;
4、把你想输入的参数写在program argumenst就可以了,多个参数使用空格隔开。
完成后点run即可通过运行结果看到参数使用情况了。

你可能感兴趣的文章
poj-1017-packets
查看>>
你打算找一份稳定的工作?
查看>>
timed out waiting for to be synced
查看>>
(5)Python字典
查看>>
mysql问题
查看>>
为何要领域驱动设计
查看>>
ios GCD ---- (1)
查看>>
Pi编译安装PHP/Nginx并安装完整LEMP环境
查看>>
HTTPS 也不安全?被发现新漏洞会暴露你的数据
查看>>
x86 和 ARM 谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了
查看>>
dva.js学习梳理集
查看>>
ECS运维神器重装上阵,云助手亮相控制台
查看>>
Nacos 发布 0.9.0 版本,为 GA 作准备
查看>>
ECS控制台实例列表支持自动续费状态过滤
查看>>
运维利器 RunDeck v3.0.15 发布, 服务器自动化操作
查看>>
后端架构师技术图谱
查看>>
快速掌握:大型分布式系统中的缓存架构
查看>>
redis系列:分布式锁
查看>>
ES6(Proxy 和 Reflect)
查看>>
spring+springMVC+mybatis的整合 part1
查看>>