gpt4 book ai didi

java - 如何将依赖项注入(inject) Jersey 资源?

转载 作者:行者123 更新时间:2023-12-04 05:55:30 24 4
gpt4 key购买 nike

我正在使用 Jersey 和 Grizzly 构建一个 REST API。我没有使用任何依赖注入(inject)框架,如 Google Guice。

其中一个资源需要从 Map 中检索数据以响应 GET 请求。

我不知道如何将此 Map 注入(inject)资源,因为使用 Jersey 我无法控制资源的初始化方式。

我意识到我可以将 Map 声明为静态,但这似乎是一个非常丑陋的解决方案。

最佳答案

我最终找到了解决方案,我需要创建一个“Provider”,如下:

@Provider
public class DBPoolInjectableProvider extends SingletonTypeInjectableProvider<Context, BoneCPDataSource> {

public DBPoolInjectableProvider() throws SQLException {
super(BoneCPDataSource.class, APIMain.getDBPool());
}
}

如您所见,在这种情况下,我实际上需要访问数据库连接池,但同样的想法也适用于任何其他类型的对象。

我只是将此提供程序放在由 Jersey 扫描的包中,每当它在 Jersey 资源中看到这样的方法时,它就会将其拾取并使用它:
public TestResponse testGet(@Context final BoneCPDataSource ds) throws SQLException {
...
}

(我个人认为这种“远距离行动”是一种反模式,但我现在已经工作了,所以我会闭嘴)

关于java - 如何将依赖项注入(inject) Jersey 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556642/

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