在服务器启动时实例化接口的类

时间:2017-09-14 03:38:54

标签: java annotations

我有一组需要在服务器启动时启动的订阅者。 现在我正在实例化它们并在Application.java中调用它们的run方法。

认为如果这些是自己实例化的,可能是使用自定义注释或属于某个接口(获取所有类的接口和实例化)会很棒。这样,将来编写新订阅者的任何人都不需要创建对象并在其上调用run()。

想知道是否有人先前解决了这个问题,是否有意义。

示例:

我有一个事件处理程序接口:

interface EventHandler {
  void process(String data);
}

然后实现类:

public class CoolEventHandler implements EventHandler {

  public void process(String data) {
    //handle cool event
  }
}

public class HotEventHandler implements EventHandler {

  public void process(String data) {
    //handle hot event
  }
}

我有一个订阅服务,它监听远程API,如果有数据,它会将其传递给处理程序:

public class PollService {

  public static void register(String API, EventHandler eventHandler) {
    //create a thread to poll API 
    //and if data is received, call eventHandler.process()
  }
}

在我的应用程序开始时,我正在Application.java

中注册处理程序
PollService.register("/cool", new CoolEventHandler());
PollService.register("/hot", new HotEventHandler());

明天如果有一个新的处理程序,比如WarmEventHandler,我将不得不再次注册。我试图避免这最后一步。注册所有EventHandler类的最佳方式是什么?

0 个答案:

没有答案