zoukankan      html  css  js  c++  java
  • Java项目启动时执行指定方法的几种方式

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

    1. 使用@PostConstruct注解

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @Component
    public class Test {

    public Test(){
    System.out.println("我最先执行");
    }

    /**
    *我第二个执行
    */
    @Autowired
    private T t;

    /**
    *我第三个个执行
    */
    @PostConstruct
    private void init(){
    //假装有代码
    }
    }

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

    2. CommandLineRunner接口

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

    1
    2
    3
    4
    5
    6
    7
    8
    @Component
    public class MyCommandLineRunner implements CommandLineRunner{

    @Override
    public void run(String... args) throws Exception{
    //假装有代码
    }
    }

    3. ApplicationRunner 接口

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    @Order(value = 1)
    @Component
    public class MyApplicationRunner implements ApplicationRunner{

    @Override
    public void run(ApplicationArguments args) throws Exception{
    //假装有代码
    }
    }

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

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

     

    本文出自http://zhixiang.org.cn,转载请保留。

  • 相关阅读:
    41.给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
    Java反射学习记录
    LeetCode算法笔记-回溯法
    LeetCode算法笔记(二)
    LeetCode算法笔记(一)
    JDBC学习笔记--通用的查询方法
    JDBC学习笔记--ResultSetMetaData
    JDBC学习笔记--PreparedStatement
    Java学习笔记---字符串
    Java学习笔记---通过异常处理错误
  • 原文地址:https://www.cnblogs.com/zhixiang-org-cn/p/9490887.html
Copyright © 2011-2022 走看看