マルチテナント アプリケーションを実装しています。私のリソースの多くには、「/api/tenant/{tenant_id}/resource/path/」のようなパスがあります。私がやりたいことは、"{tenant_id}" パス パラメーターに基づいて、さまざまな DAO (または他のオブジェクト) をリソースに挿入することです。
同様のことを達成する方法について、次の2つの最適なアイデアがあります。
次のようなラッパー クラスを使用します。
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
。正しい DAO を持つリソースを返すパス "/api/tenant/{tenant_id}" でサブリソース ロケーターを使用します。
他のアイデアはありますか?理想的にはSomeDAO
、自分のリソース クラスにアノテートされた属性または類似の属性を単純に持つことです (パス パラメーターを考慮し@Inject
たファクトリを使用します)。tenant_id