gpt4 book ai didi

java - Jersey 2.* 和 HK2.根据路径参数注入(inject)不同的对象(例如DAO)

转载 作者:行者123 更新时间:2023-12-01 14:02:25 26 4
gpt4 key购买 nike

我正在实现一个 Multi-Tenancy 应用程序。我的许多资源都有类似“/api/tenant/{tenant_id}/resource/path/”的路径。我想做的是根据“{tenant_id}”路径参数将不同的 DAO(或可能其他对象)注入(inject)到资源中。

关于如何实现类似的目标,我有两个次优的想法:

  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. 在路径“/api/tenant/{tenant_id}”上使用子资源定位器,这将返回具有正确 DAO 的资源。

还有其他想法吗?理想情况下,我想做的就是在我的资源类中简单地添加 SomeDAO 属性,该属性用 @Inject 或类似的东西注释(并且将使用一些采用tenant_id 路径参数纳入考虑)。

最佳答案

我遇到了同样的问题,最终使用了 guice multibinder 解决方案。本质上,您将 Dao 绑定(bind)到 MultiBinder,然后将工厂注入(inject)到您的服务中。这是我能想到的解决该问题的最干净的解决方案。

看看这个 url,这几乎就是我为需要特定 dao 的资源而进行依赖注入(inject)所做的工作。

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

关于java - Jersey 2.* 和 HK2.根据路径参数注入(inject)不同的对象(例如DAO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com