我正在实现一个多租户应用程序。我的许多资源都有类似“/api/tenant/{tenant_id}/resource/path/”的路径。我想做的是根据“{tenant_id}”路径参数向资源注入不同的 DAO(或可能的其他对象)。
关于如何实现类似的目标,我有两个次优的想法:
使用这样的包装类:
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
.在路径“/api/tenant/{tenant_id}”上使用子资源定位器,它将返回具有正确 DAO 的资源。
还有其他想法吗?理想情况下,我想做的是SomeDAO
在我的资源类中简单地使用带有@Inject
或类似注释的属性(并且将使用一些考虑tenant_id
路径参数的工厂)。