springboot预加载

在开发过程中会遇到一些需要提前将数据准备好到某一些地方的时候,也有想要spring容器自动执行的某一段代码,那么spruingboot的加载顺序决定了我们到底要在哪一步做我们想要的预加载。

首先就是java本身加载的时候,自己加载的顺序

  • static代码块   =====> static静态代码块,在类加载的时候自动执行
  • 构造方法contruct  ===> 在对象初始化时执行,执行顺序在static代码块之后

spring加载时的加载顺序

  •  @PostContruct ===>该注解使用在方法上,在对象依赖注入初始化之后执行
  • ApplicationRunner和CommandLineRunner      ======>                                                          SpringBoot提供了两个接口来实现Spring容器 启动完成后执行 的功能,两个接口分别为CommandLineRunner和ApplicationRunner。 这两个接口需要实现一个run方法,将代码在run中实现即可。这两个接口功能基本一致,其区别在于run方法的入参。ApplicationRunner的run方法入参为ApplicationArguments,为CommandLineRunner的run方法入参为String数组。
  • Order注解

    当有多个类实现了CommandLineRunner和ApplicationRunner接口时,可以通过在类上添加@Order注解来设定运行顺序。l执行顺序按数字由小到大执行

  •  


总结:

Spring应用启动过程中,肯定是要自动扫描有@Component注解的类,加载类并初始化对象进行自动注入。加载类时首先要执行static静态代码块中的代码,之后再初始化对象时会执行构造方法。在对象注入完成后,调用带有@PostConstruct注解的方法。当容器启动成功后,再根据@Order注解的顺序调用CommandLineRunner和ApplicationRunner接口类中的run方法。因此,加载顺序为

  1. static

  2. constructer

  3. @PostConstruct

  4. CommandLineRunner和ApplicationRunner. 

参考文章链接:

SpringBoot - 启动时实现预加载自动执行代码 - 灰信网(软件开发博客聚合) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值