点X不NG
2016-08-26 03:15
采纳率: 51.5%
浏览 11.0k
已采纳

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • csdn_ZOL 2016-08-26 09:35
    已采纳
     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();
        }
    }
    

    输出结果“我被调用”

    初来乍到,望采纳

    点赞 评论
  • qq_35542778 2016-08-26 03:19

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

    点赞 评论
  • Indifferent_heart 2016-08-26 03:22

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

    点赞 评论
  • old-lu 2016-08-26 03:28

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

    点赞 评论
  • 乐古 2016-08-26 03:33

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

    点赞 评论
  • villare 2016-08-26 07:52

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

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

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

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

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

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

    点赞 评论
  • yunshouhu 2016-08-27 13:43

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

    点赞 评论
  • 刘兆贤 2016-09-01 23:54

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

    点赞 评论

相关推荐 更多相似问题