1

現時点では、静的シングルトンを使用して、Guice 3.0 が DI を介して構築するシングルトン サービスを取得しています。これはひどいハックであり、DI に Guice を使用する意図された方法ではまったくなく、単体テストを複雑にしています。

public class ServiceProvider {
    private static ServiceProvider instance = new ServiceProvider();    
    private MyService myService;

    public ServiceProvider() {      
        Injector myInjector = Guice.createInjector(new MyModule());
        myService = noobmeterInjector.getInstance(MyService.class);
    }

    public static MyService getMyService() {
        return instance.myService;
    }
}

ただし、少なくとも 4 つの異なる場所でそのサービスが必要なため、それを修正する方法がよくわかりません。

  • Stripes ActionBeans - Stripes Guice プラグインが役立つと思います。接続はしましたが、最終的に複数の並列 MyServices が作成されました。
  • ServletContextListener - Guice Servlet モジュールが何らかの形で役立つ可能性があると思いますが、web.xml を Guice 構成に置き換えること (この時点では私の優先事項ではありません) と HttpServletRequests を Guice で構築されたオブジェクトに注入すること (再びやりたいことではない)
  • Quartz Jobs - ここで関連するものを見つけましたが、他のものと「並列」の MyService を作成することになるかどうかはわかりません
  • コマンドラインからバッチプロセスを実行 - これは簡単な部分です

MyService サービスはシングルトンであることを意図しています (開いている DB/MQ 接続などを所有する他のサービスであるため、これらを複数作成するのは適切ではありません)。

私が見逃しているGuiceでこれを行う簡単な方法はありますか?

4

1 に答える 1