java项目启动加载一个类,执行一个方法。用static{}能做到吗?

#就是一个定时任务类,怎样让项目启动的时候,可以让这个类自动加载并调用,线程启动运行起来呢?

组长说用 static{}就行 但是我也不太会,请大家指教 ,我也看了注册监听什么的 ,但是组长不让。

 class TestStatic{

    static{
        TestStatic.test();
    }
    static void test(){
        System.out.println("我被调用");
    }
}
public class TestThread {

    public static void main(String[] args) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                new TestStatic();
            }
        }).start();
    }
}

输出结果“我被调用”

初来乍到,望采纳

Timer类 定时几秒就可以自动启动

用static{}应该可以吧 这个不是只要执行就首先调用这个方法吗 而且只调用一次

静态代码块是在编译的时候会给你预留空间,实例化对象的时候自动调用。如果不实例化是不会执行的。
你可以在配置文件注入一个bean,或者监听spring的启动实现ApplicationListener。不过这两种方式都是通过配置的方式实现的
,耦合性低,安全性低

java中static{}语句块详解你可以看下这个链接,然后重点看下jdbc和hibernate的应用,你可以借鉴你框架中对jdbc和hibernate的调用方法自己建一个类,注入到spring,这样当项目加载第一个类的时候就会执行你的static方法了,而且只执行一次

借用现在很多web框架的做法,

  1. 定义通用接口,包含start,stop方法

  2. 在start,stop方法中实现项目启动和停止时的具体操作

  3. 在启动的类中定义数组,存储需要自动加载的方法(以同一接口的形式),遍历数组依次执行接口的start方法

这种方式可以很方便的添加新的自动执行方法

至于定时任务可以使用cron4j ,将定时任务的配置放在start接口函数中,将定时任务的关闭放在stop接口函数,实现自动启动定时任务

用static{} 是可以的,直接在static调用你的代码就行了,但是想让static代码执行的话需要一个条件。就是jvm要去加载这个类。你可以直接实例化这个类,
或者通过Class.forName("")加载该类即可。
当你的Java程序加载这个类的时候就会执行你的static方法了,而且只执行一次。

Static的话,类要初始化一次,或者被调用过,才会被虚拟机加载