zoukankan      html  css  js  c++  java
  • SpringBoot--ApplicationRunner接口

    ApplicationRunner接口

    在项目中,可能会遇到这样一个问题:在项目启动完成之后,紧接着执行一段代码。
    在SpringBoot中,提供了一个接口:ApplicationRunner。该接口中,只有一个run方法,他执行的时机是:spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。

    实现了ApplicationRunner接口的类,并重写run方法,在springBoot项目启动后就是调用执行一次run方法

    @Component
    @Order(1)
    public class TestImplApplicationRunner implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args) throws Exception {
        //do something
            System.out.println("测试ApplicationRunner接口1");
    
        }
    }
    
    
    @Component
    @Order(2)
    public class TestImplApplicationRunner2 implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args) throws Exception {
        //do something
            System.out.println("测试ApplicationRunner接口2");
    
        }
    }

     

    @Component注解

    Component 将类注入到spring容器中。

    在同一个项目中,可以定义多个ApplicationRunner的实现类,他们的执行顺序通过注解@Order注解或者再实现Ordered接口来实现。

    run方法的参数:ApplicationArguments可以获取到当前项目执行的命令参数。(比如把这个项目打成jar执行的时候,带的参数可以通过ApplicationArguments获取到);

    由于该方法是在容器启动完成之后,才执行的,所以,这里可以从spring容器中拿到其他已经注入的bean。

    @Order注解
    如果有多个实现类,而你需要他们按一定顺序执行的话,可以在实现类上加上@Order注解。@Order(value=整数值)。SpringBoot会按照@Order中的value值从小到大依次执行。
    @order,使用注解方式使bean的加载顺序得到控制,@Order标记定义了组件的加载顺序,值越小拥有越高的优先级,可为负数。
    值越小,越先被加载。

    @Order(-1)优先于@Order(0)
    @Order(1)优先于@Order(2)

  • 相关阅读:
    asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
    同一服务器上多个版本的 sqlserver ,如何连接,改变某一实例的端口号
    安装SQl 2008为SQL Server代理服务提供的凭据无效
    winserver2008 R2 64位 企业版 , IIS 配置运行 asp+access 网站
    获取屏幕分辩率及客户端信息
    如何使用 aspnetpager
    SQL函数:判断库、表、存储过程等是否存在
    NPOI封装类
    Python基础Day1
    HTML5_增强可访问性和解决IE兼容性问题
  • 原文地址:https://www.cnblogs.com/houchen/p/14004924.html
Copyright © 2011-2022 走看看