`

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

阅读更多

    需求缘起:在有【Spring Boot启动加载数据CommandLineRunner】文章中介绍了CommandLineRunner的使用,有人评论说实现ApplicationRunner接口也可以,那么本节就是要介绍ComandLineRunnerApplicationRunner区别和使用

本节大纲
(1)使用场景的提出;
(2)共同点和区别;
(3)CommandLineRunner使用例子;
(4)ApplicationRunner使用例子;
(5)使用Ordered接口或者Order注解修改执行顺序;
(6)再次理解共同点和区别以及使用时机;
(7)题外话;

 

 

       具体内容接着往下看:

1)使用场景的提出;

       我们在开发过程中会有这样的场景:需要在容器启动的时候执行一些内容,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,在Spring框架下是通过ApplicationListener监听器来实现的。在Spring Boot中给我们提供了两个接口来帮助我们实现这样的需求。这两个接口就是我们今天要讲的CommandLineRunnerApplicationRunner他们的执行时机为容器启动完成的时候

 

2)共同点和区别;

共同点:其一执行时机都是在容器启动完成的时候进行执行;其二这两个接口中都有一个run()方法;

不同点:ApplicationRunnerrun方法的参数ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组

 

3CommandLineRunner使用例子;

       CommandLineRunner例子大体的思路是:编写一个class,然后实现CommandLineRunner接口,最后添加@Component注解,具体代码如下:

package com.kfit.config;

 

import org.springframework.boot.CommandLineRunner;

import org.springframework.stereotype.Component;

 

/**

 * 注意:需要注解:@Component

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2017115

 */

@Component

public class MyStartupRunner1 implements CommandLineRunner{

    @Override

    public void run(String... args) throws Exception {

        System.out.println("<<<<<<<<<<<<这个是测试CommandLineRunn接口>>>>>>>>>>>>>>");

    }

}

运行代码,观察控制台输出:

<<<<<<<<<<<<这个是测试CommandLineRunn接口>>>>>>>>>>>>>>

 

4ApplicationRunner使用例子;

       ApplicationRunner例子大体的思路是:编写一个class,然后实现ApplicationRunner接口,最后添加@Component注解,具体代码如下:

package com.kfit.config;

 

import org.springframework.boot.ApplicationArguments;

import org.springframework.boot.ApplicationRunner;

import org.springframework.stereotype.Component;

 

/**

 * 注意:需要添加@Component注解

 * @author Angel --守护天使

 * @version v.0.1

 * @date 2017115

 */

@Component

public class MyStartupRunner2 implements ApplicationRunner{

 

    @Override

    public void run(ApplicationArguments args) throws Exception {

        System.out.println("<<<<<<<<<<<<这个是测试ApplicationRunner接口>>>>>>>>>>>>>>");

    }

   

}

运行,观察控制台输出:

<<<<<<<<<<<<这个是测试ApplicationRunner接口>>>>>>>>>>>>>>

 

5)使用Ordered接口或者Order注解修改执行顺序;

问题提出: 如果有多个实现类,而我们需要按照一定的顺序执行的话,那么应该怎么办呢?

解决方案:其一可以在实现类上加上@Order注解指定执行的顺序;其二可以在实现类上实现Ordered接口来标识。

需要注意:数字越小,优先级越高,也就是@Order(1)注解的类会在@Order(2)注解的类之前执行。

 

6)再次理解共同点和区别以及使用时机;

在之前谈过的区别就不说了,我们看看官方文档对CommandLineRunnerApplicationRunner的区别说明:

Interface used to indicate that a bean should run when it is contained within 
a SpringApplication. Multiple CommandLineRunner beans can be defined 
within the same application context and can be ordered using the Ordered 
interface or @Order annotation. 
If you need access to ApplicationArguments instead of the raw String array consider using ApplicationRunner.

 

 

其实没有很大区别,如果想要更详细地获取命令行参数,那就使用ApplicationRunner接口。

 

7)题外话;

-----------------------------------------------------------------

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

 

1、先写好Java代码,比如文件名为IntArrqy.java

 

2、在工具栏或菜单上点run as下边有个Run Configuration

 

3、在弹出窗口点选第二个标签arguments

 

4、把你想输入的参数写在program argumenst就可以了,多个参数使用空格隔开。

 

完成后点run即可通过运行结果看到参数使用情况了。

-------------------------------------------------------------

 

 

视频&交流平台

à SpringBoot网易云课堂视频

http://study.163.com/course/introduction.htm?courseId=1004329008

à Spring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

 

 

分享到:
评论
2 楼 林祥纤 2017-07-07  
颖宝blingbling 写道
过了4个月继续开看博主的文章。感觉之前的文章有些已经废弃了。一直在更新


博客在更新,一些知识是一样的。
1 楼 颖宝blingbling 2017-07-06  
过了4个月继续开看博主的文章。感觉之前的文章有些已经废弃了。一直在更新

相关推荐

    从零开始学Spring Boot.pdf

    从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf从零开始学Spring Boot.pdf...

    27. Spring Boot Junit单元测试【从零开始学Spring Boot】

    Spring Boot Junit单元测试【从零开始学Spring Boot】"的主题,深入探讨Spring Boot中Junit单元测试的使用方法和最佳实践。 首先,我们要了解什么是单元测试。单元测试是一种针对软件中的最小可测试单元(如方法)...

    31. Spring Boot导入XML配置【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列教程中,我们将深入探讨如何在Spring Boot项目中导入并使用XML配置。Spring Boot以其简化Spring应用的初始搭建以及开发过程而闻名,通常推崇的是Java配置而非XML配置。然而,在...

    从零开始学Spring Boot

    1.26 Spring Boot启动加载数据CommandLineRunner 1.27 Spring Boot环境变量读取和属性对象的绑定 1.28 Spring Boot使用自定义的properties 1.29 改变自动扫描的包 1.30 Spring Boot Junit单元测试 1.31 SpringBoot...

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

    Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中的bean。下面将详细讲解这个主题。 首先,了解Spring Boot的基础概念是必要的。Spring Boot...

    82. Spring Boot – 启动彩蛋【从零开始学Spring Boot】

    另外,开发者可以创建一个自定义的`Banner`类,扩展`org.springframework.boot.Banner`接口并实现`printBanner()`方法。这个方法允许你在启动时打印任何你想展示的内容,包括ASCII艺术或其他复杂格式。例如: ```...

    38. Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    在Spring Boot应用中,随着系统复杂度的增加,单一服务器往往无法满足高并发、高可用的需求,因此我们会采用分布式架构。然而,在分布式环境下,传统的基于HTTP Session的状态管理方式会遇到问题,因为每个服务器都...

    92.Spring Boot使用模板velocity【从零开始学Spring Boot】

    在现代Java Web开发中,Spring Boot以其简洁的配置、强大的功能和高效的开发效率,成为了许多开发者的首选框架。而Velocity作为一款轻量级的模板引擎,能够帮助我们快速生成动态HTML页面,极大地提高了前端展示的...

    22. Spring Boot 拦截器HandlerInterceptor【从零开始学Spring Boot】

    在Spring Boot框架中,拦截器(HandlerInterceptor)是一种强大的机制,用于在请求处理前后执行自定义逻辑。在本文中,我们将深入探讨Spring Boot中的拦截器,了解其工作原理、如何实现以及实际应用。 首先,Spring...

    47. Spring Boot发送邮件【从零开始学Spring Boot】

    在本篇博文中,我们将深入探讨如何使用Spring Boot发送电子邮件,这是Spring Boot框架的一个非常实用的功能,可以帮助开发者轻松实现企业级应用中的邮件服务。通过学习本文,你可以掌握Spring Boot集成...

    1. [视频]spring boot起步之Hello World【从零开始学Spring Boot】

    在本节中,我们将深入探讨"Spring Boot起步之Hello World"这一主题,这是学习Spring Boot框架的典型入门教程。Spring Boot是由Pivotal团队开发的一个框架,它旨在简化Spring应用程序的初始搭建以及开发过程,通过...

    15. Spring Boot使用Druid和监控配置【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列中,我们将探讨如何在Spring Boot项目中集成并配置Druid数据源以及其监控功能。Druid是一个强大的数据库连接池,它提供了丰富的监控、扩展性以及性能优化特性。Spring Boot简化...

    29. Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】

    在本教程中,我们将深入探讨如何使用Spring Boot实现文件上传功能,特别是多文件上传。Spring Boot简化了在Java应用程序中处理文件上传的过程,使得开发者能够更专注于业务逻辑,而不是底层的HTTP操作。以下是对该...

    16. Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列中,我们将探讨如何在Spring Boot项目中使用Druid数据源进行编程注入。Druid是一个优秀的数据库连接池,它提供了强大的监控和扩展功能,是许多企业级应用首选的数据源解决方案。...

    41. Spring Boot 使用Java代码创建Bean并注册到Spring中【从零开始学Spring Boot】

    这是Spring Boot的核心特性之一,它使得我们能够以编程方式管理对象,而无需XML配置。让我们逐步解析这个过程。 首先,了解Spring Boot的基础。Spring Boot旨在简化Spring应用程序的初始设置和配置,通过“约定优于...

    Spring Boot 新手入门指南.pdf

    重点讲解了如何从零开始搭建一个基于Spring Boot的应用程序,涵盖创建项目的不同方式、构建和运行首个Web应用、实现RESTful API及数据持久化等内容。并通过实际操作演示了项目结构、代码编写、配置管理及数据库交互...

    21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

    在Spring Boot框架中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们可以帮助我们实现一些自定义的处理逻辑,如数据校验、日志记录、请求拦截等。下面将详细讲解这两个概念及其在实际开发中的...

    37. Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    通过自动配置和起步依赖,Spring Boot使得开发者可以快速搭建项目并开始开发。 接下来,我们讨论**EHCache**。EHCache是一款开源的、内存中的数据缓存系统,广泛用于Java应用程序中。它可以缓存对象,减少数据库...

Global site tag (gtag.js) - Google Analytics