2019独角兽企业重金招聘Python工程师标准>>>

102. Spring Boot之CommandLineRunner和ApplicationRunner【从零开始学Spring Boot】

实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 
为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。

很简单,只需要一个类就可以,无需其他配置。 
创建实现接口 com.kfit.runner.CommandLineRunner 的类

package com.kfit.runner;

import org.springframework.boot.CommandLineRunner;

import org.springframework.stereotype.Component;

/**

* 服务启动执行

*

* @author   Angel(QQ:)

*/

@Component

public class MyStartupRunner1 implements CommandLineRunner {

@Override

public void 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)

public class MyStartupRunner1 implements CommandLineRunner {

@Override

public void 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)

public class MyStartupRunner2 implements CommandLineRunner {

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

转载于:https://my.oschina.net/u/3229047/blog/833197

23. Spring Boot启动加载数据CommandLineRunner【从零开始学Spring Boot】相关推荐

  1. Spring Boot 启动加载数据 CommandLineRunner

    实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求.  为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner ...

  2. springboot 启动加载数据 commandLineRunner

    项目启动时,我们需要加载一些数据或启动定时任务执行数据下载或同步,此时可以用到commandLineRunner类. @Component //被spring容器管理 @Order(value = 2 ...

  3. spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目

    spring 启动加载数据 Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特​​殊特征. 它使使用数据访问技术,关系和非关系数据库, ...

  4. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...

  5. (8). 使用JPA保存数据【从零开始学Spring Boot】

    在看这一篇文档的话,需要先配置好JPA – Hibernate. 总体步骤: (1)   创建实体类Demo,如果已经存在,可以忽略. (2)   创建jpa repository类操作持久化. (3 ...

  6. 17、Spring Boot普通类调用bean【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...

  7. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  8. Web项目启动加载数据至内存--SpringApplicationListener实现

    需求: 1.项目开发中会有一些平凡使用的数据需要加载到内存中;以减少数据库交互次数.降低服务器和数据库压力. 思路: 1.在系统启动时,将监听web容器创建完成事件; 2.创建一个用于存储相关数据的D ...

  9. java项目启动加载数据_java项目启动时加载数据库信息存入缓存方法

    一.获取需要加载的数据 @Component public class MathMethod { public void addMethod(int i) { //查询方法存入redis等库 Syst ...

最新文章

  1. 2022-2028年中国氟橡胶预混胶行业市场行情监测及未来前景规划报告
  2. java-数组排序--冒泡排序、鸡尾酒排序、地精排序
  3. 网管日志-06.09.08
  4. Linux C下实现线程池
  5. mPaaS 客户端问题排查之突如其来的“白屏”等待
  6. Microsoft.CSharp.dll程序集的作用
  7. 洛谷 P3367 ---- 【模板】并查集
  8. FZOJβ #31.字符串
  9. 阿里6年,我的技术蜕变之路!
  10. 云计算交流会计算机操作,计算机二级考试真题-word-小王-云计算技术交流大会...
  11. Mysql5.6.x版本半同步主从复制的开启方法
  12. cs231n 作业环境搭建
  13. wintel联盟即将崩盘,微软联合芯片企业开发ARM架构芯片
  14. 在网站上营销品牌故事的六种简单方法
  15. 程序员理想的工作环境应该是怎样的?
  16. 敲黑板!5G消息、富媒体消息、一键登录知识点汇总
  17. 抗渗等级p6是什么意思_混凝土抗渗等级w4是什么意思?
  18. 11- 移动车辆识别统计项目 (OpenCV操作指南) (项目十一) *
  19. 量子计算机:决胜21世纪的利器
  20. java 汉字转换全拼、首字母拼音

热门文章

  1. JavaScript数组结构与算法——数组详解(中)
  2. 两种方法用于检查传入的数字是否为整数
  3. 安卓使用JNI-NDK
  4. 一次合同违约复盘(一)
  5. 自定义sort函数第三个参数的规则
  6. 对于技术,工程师没有几个写博客的
  7. CSS的继承、权值与层叠
  8. 传值调用 与传地址调用(传引用)
  9. 很多想法、很多感慨。
  10. Moonlight已经可以下载,目前是0.6版