spring boot项目启动时如何初始化你想要的资源?

2 篇文章 0 订阅
2 篇文章 0 订阅

spring boot项目启动时如何初始化你想要的资源?

我们在实际的开发当中,不同的项目会有不同的需求,有时候我们在启动项目的时候需要做一些初始化的操作,那么你知道怎么更加便捷的去初始化这些资源呢?

首先,我们在spring boot的启动类上,加上两句话,使项目在启动的时候控制台会输出信息,我们看看项目的启动顺序是什么?

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        System.out.println("start");
        SpringApplication.run(DemoApplication.class, args);
        System.out.println("Has already started;");
    }
}

然后我们创建一个类RunnerLoading实现CommandLineRunner接口:

@Component
public class RunnerLoading implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("When will I start to implement it?");
    }
}

现在开始启动项目,看看会出现什么结果呢?
在这里插入图片描述
根据控制台的打印信息我们可以看出 CommandLineRunner 中的方法会在 Spring Boot 容器加载之后,在项目启动完成之前执行
如果我们在启动容器的时候需要初始化很多资源,并且初始化资源相互之间有序,那如何保证不同的 CommandLineRunner 的执行顺序呢?那就是使用 @Order 注解。
我们再创建两个类进行测试:

@Component
@Order(1)
public class Runner1 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("我应该是初始化资源第一名");
    }
}
@Component
@Order(2)
public class Runner2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("我应该是初始化资源第二名");
    }
}

启动项目,看看执行结果:
在这里插入图片描述
通过控制台的输出我们发现,添加 @Order 注解的实现类要先执行,并且@Order()里面的值越小启动越早,可以修改@Order()里面的值进行有顺序的初始化资源,你学会了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值