如何在Springboot 项目启动后执行某些自定义代码逻辑

问题背景

最近在项目的过程中,需要在项目启动后去加载一些资源信息、执行某段特定逻辑等等初始化工作,譬如删除一些表的数据,清理缓存等等;

这时候我们就需要用到SpringBoot提供的开机自启的功能;

解决方案

SpringBoot给我们提供了两个方式:CommandLineRunnerApplicationRunnerCommandLineRunnerApplicationRunner接口是在容器启动成功后的最后一步回调,这两种方法提供的目的是为了满足,在项目启动的时候立刻执行某些方法;

第一种:CommandLineRunner

即建一个自己的事件监听类,实现CommandLineRunner接口:

@Component
public class MyStartRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("自己定义的第一个启动后事件开始执行。。。。。。。");
    }
}

如果需要多个监听类,只需要定义多个,然后通过@Order注解或者实现Order接口来标明加载顺序;

@Component
@Order(1)
public class MyStartRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("自己定义的第一个启动后事件开始执行。。。。。。。");
    }
}
@Component
@Order(2)
public class MyStartRunner2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("自己定义的第二个启动后事件开始执行。。。。。。。");
    }
}

第二种:ApplicationRunner

创建自定义监听类,实现ApplicationRunner接口

@Component
public class MyApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("我自定义的ApplicationRunner事件。。。。。。");
    }
}

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值