Java项目启动时执行指定方法的几种方式

Bertha 。 2024-04-18 20:18 138阅读 0赞

640?wx\_fmt=gif

学习更多Java干货,戳上面的

蓝色字题

关注我!

很多时候我们都会碰到需要在程序启动时去执行的方法,比如说去读取某个配置,预加载缓存,定时任务的初始化等。这里给出几种解决方案供大家参考。

1. 使用@PostConstruct注解

这个注解呢,可以在Spring加载这个类的时候执行一次。来看一下下方代码。

  1. @Component
  2. public class Test {
  3. public Test(){
  4. System.out.println("我最先执行");
  5. }
  6. /**
  7. *我第二个执行
  8. */
  9. @Autowired
  10. private T t;
  11. /**
  12. *我第三个个执行
  13. */
  14. @PostConstruct
  15. private void init(){
  16. //假装有代码
  17. }
  18. }

上方就是@PostConstruct注解的使用方法了,同时也表示了此类被加载时的执行顺序。

2. CommandLineRunner接口

使用CommandLineRunner接口类似于Main方法启动,可以接受一个字符串数组的命令行参数,来看一下实现

  1. @Component
  2. public class MyCommandLineRunner implements CommandLineRunner{
  3. @Override
  4. public void run(String... args) throws Exception{
  5. //假装有代码
  6. }
  7. }

3. ApplicationRunner 接口

此种方式与实现CommandLineRunner接口的区别就是他的参数是ApplicationArguments

  1. @Order(value = 1)
  2. @Component
  3. public class MyApplicationRunner implements ApplicationRunner{
  4. @Override
  5. public void run(ApplicationArguments args) throws Exception{
  6. //假装有代码
  7. }
  8. }

我们可以看到,此类相比较于第二种方式还增加一个@Order注解,这个注解其实第二种方式也是能加的。

它的作用就是控制类的加载顺序,这个顺序是从小到大的。比如说启动时先去加载Order的value等于1的类,然后去加载等于2的类。

640?wx\_fmt=gif

推荐阅读

  • Java进阶路线
  • 无套路免费技术干货

640?wx\_fmt=jpeg

点赞收藏转发好看再走呗!

640?wx\_fmt=gif

发表评论

表情:
评论列表 (有 0 条评论,138人围观)

还没有评论,来说两句吧...

相关阅读