0

マルチテナント アプリケーションを実装しています。私のリソースの多くには、「/api/tenant/{tenant_id}/resource/path/」のようなパスがあります。私がやりたいことは、"{tenant_id}" パス パラメーターに基づいて、さまざまな DAO (または他のオブジェクト) をリソースに挿入することです。

同様のことを達成する方法について、次の2つの最適なアイデアがあります。

  1. 次のようなラッパー クラスを使用します。

    class SomeDAOWrapper
    {
        SomeDAO getSomeDAO()
        {
            return new SomeDAO(tenantId_m);
            // Alternatively we could store the DAOs in some hash-table
            // with tenantId_m as the key.
        }
    
        @PathParam("tenant_id")
        private long tenantId_m;
    }
    

    次に、私のリソース クラスでは、 でSomeDAOWrapper注釈が付けられた属性として持つことになります@BeanParam

  2. 正しい DAO を持つリソースを返すパス "/api/tenant/{tenant_id}" でサブリソース ロケーターを使用します。

他のアイデアはありますか?理想的にはSomeDAO、自分のリソース クラスにアノテートされた属性または類似の属性を単純に持つことです (パス パラメーターを考慮し@Injectたファクトリを使用します)。tenant_id

4

1 に答える 1

1

私はこれと同じ種類の問題に遭遇し、guice マルチバインダー ソリューションを使用することになりました。基本的に、Dao を MultiBinder にバインドしてから、ファクトリをサービスに挿入します。これは、問題に対して私が思いついた最もクリーンな解決策でした。

この URL を確認してください。これは、特定の dao を必要とするリソースで依存性注入を機能させるために私が行ったことのほとんどです。

https://groups.google.com/forum/#!topic/google-guice/J6S77sILTAY

于 2013-10-08T18:31:25.750 に答える