Jersey - 有没有办法用参数实例化每个请求资源?

2024-01-20

假设我有这样的课程:

@Path("/test")
public class TestResource{

   private TestService testService;

   public TestResource(TestService testService){
      this.testService = testService;
   }

   @GET
   public String getMessage(){
      return testService.getMessage();
   }


}

然后,我想在 Jersey 上注册它。一个会做:

 TestService testService = new TestServiceImpl();
 resourceConfig.register(new TestResource(testService));

但问题是该方法创建了 TestResource 的单个实例。我想为每个请求创建一个实例。因此,泽西岛有一个方法可以做到这一点:

 TestService = new TestServiceImpl();
 resourceConfig.register(TestResource.class);

太棒了!但它不允许我将实例化参数传递给其构造函数。

最重要的是,我使用的是 DropWizard,它也不允许我访问 ResourceConfig 中的所有方法(但我检查了它的文档,没有找到任何让我传递参数的方法)

所以我想知道是否有办法实现这一目标。

Thanks!

PS:我知道我可以使用 Spring 或 Guice (或我自己的实例提供程序)并注入我的类来摆脱这个问题,但我不想这样做(当然,如果这是唯一的方法,我会这样做)


正如 @peeskillet 提到的,jersey 2.x 与 HK2 紧密耦合,似乎这是向其传递服务的唯一方法。

@Singleton
@Path("/test")
public class TestResource {

   private TestService testService;

   @Inject
   public TestResource(TestService testService){
      this.testService = testService;
   }

   @GET
   public String getMessage(){
      return testService.getMessage();
   }
}

这就是您注册的方式:

environment.jersey().register(new AbstractBinder(){
   @Override
   protected void configure() {
      bind(TestServiceImpl.class).to(TestService.class);
      // or
      bind(new TestServiceImpl()).to(TestService.class);
   });
environment.jersey().register(TestResource.class);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jersey - 有没有办法用参数实例化每个请求资源? 的相关文章

随机推荐

  • Docker 编写安装requirements.txt

    在我的 docker 镜像中 我正在克隆 git master 分支来检索代码 我使用 docker compose 作为开发环境 并使用卷运行容器 我在从 python requests txt 文件安装新项目需求时遇到了问题 在开发环境
  • 如何在 IntelliJ 中调试 Clojure 文件?

    第5行不能设置断点 其中包含 x IntelliJ 不会让我这样做 我使用了不同的插件 例如拉克洛胡尔 https github com JetBrains la clojure and Cursive https cursivecloju
  • RMarkdown 可折叠面板

    当我正在为学生准备教程时 我需要一种方法来隐藏可折叠面板中的内容 这些内容可以通过单击按钮来显示 我已经使用下面的代码让它工作了 RMarkdown 文件如下所示 title Collapsible Panel output html do
  • 显示文本区域的当前行号和列号

    我正在我的网络应用程序中制作一个文件编辑界面 我有一个包含文件内容的文本区域 当文本区域聚焦时 我想输出光标的位置 即行号和列 这很有用 因为错误消息通常会产生行号 问题是 如何确定文本区域中光标的位置 我正在使用原型库 也许已经有解决方案
  • 使用 Gold Parser 解析项目和包文件 --“IdList”需要帮助

    我正在涉足对象帕斯卡引擎 http goldparser org engine 1 pascal index htm 作者 Rob van den Brink 并且看起来 除了一些小的且容易纠正的错误 它适用于 Delphi 单元文件 但是
  • 验证驾驶执照号码?

    我正在开发 ACH 支付处理器 想知道是否可以根据某些规则来确定驾驶执照领域的范围 对此有什么想法吗 我可以只假设数字还是其他更像 SSN 的数字 Thanks 我为我正在从事的一个项目想出了这个 function utilities fu
  • SQL 查询从列中提取文本并将其存储到同一记录中的不同列

    我需要一些有关 SQL 查询的帮助 我有一个 SQL 表 其中包含已提交表单的列详细信息 我需要获取存储在该列中的部分文本 并将其放入同一行的不同列中 我需要复制的文本位始终位于列中的相同位置 任何帮助将不胜感激 伙计们 我的脑子一片空白
  • Symfony 中的 Doctrine 实体中的 @var 注释是什么?

    也许是一个愚蠢的问题 但我不知道这让我烦恼 当我创建一个实体时app console doctrine generate entity它添加了一个 var每个属性的注释 什么是 var用于 它显然表明了数据类型 但我没有看到任何文档中提到它
  • 无法使用微软编译器编译Qt

    我想使用 VS2010 编译器构建 Qt 4 7 3 但在配置时遇到问题 我正在使用 VS command shell 我的配置命令如下所示 configure exe platform win32 msvc2010 no webkit n
  • 有没有办法在 iOS 中以编程方式打开和关闭蓝牙和/或 WiFi?

    我正在寻找一种简单的方法来在 iOS 4 x 设备 iPhone 和 iPad 上切换蓝牙和 WiFi 的打开和关闭状态 当我在不同的位置和使用场景之间移动时 我会不断切换这些功能 现在需要多次点击并访问 设置 应用程序 我希望创建一个简单
  • 如何使用Python找到any()中匹配的内容?

    我正在用Python工作 使用any https docs python org 2 library functions html any像这样寻找 a 之间的匹配String 数组和从 Reddit API 中提取的评论 目前 我正在这样
  • 保持 GH 主页与 README.md 同步

    在为我的项目创建 GitHub Pages 时 建议我导入现有的README md作为项目的主页 后来我合并了gh pages with master并最终得到了两者index html and README md 问题 是更新README
  • 隐藏链接到 .so 文件的第 3 方 .a 文件中的符号

    我正在构建一个共享 so 库 该库由多个 a 文件和调用它们的瘦 API 层组成 我只希望我的 API 和外部依赖项可见 因此我使用 GCC 提供的 隐藏 可见性构建代码 fvisibility hidden 然而 其中一个库是专有的第三方
  • 什么是 mdspan,它的用途是什么?

    在过去的一年左右的时间里 我注意到 StackOverflow 上有一些与 C 相关的答案 请参考mdspan s 但我从未在 C 代码中真正见过这些 我尝试在我的 C 编译器的标准库目录和C 编码指南 http isocpp github
  • 为什么 std::map(以及 STL 中的其他关联容器)上没有 front() 方法?

    The STL参考 http www cplusplus com reference stl 似乎在概念上有所不同 一方面是 序列容器 数组向量双端队列前向列表列表 另一方面 关联容器 设置多重集映射 multimap unordered
  • iOS 中如何保存数据

    我正在制作游戏 当我关闭应用程序 在多任务管理器中关闭 时 我的所有数据都消失了 所以 我的问题很简单 我如何保存数据 假设您要保存分数和级别 它们都是名为 dataHolder 的对象的属性 DataHolder 可以创建为单例 因此您不
  • 将 Crystal Reports 连接到 SQL Server

    所以我进入了 数据库专家 但我似乎不知道如何将数据库添加到报告中 有任何想法吗 附 我正在使用 CR 13 和 SQL Server 2012 我们正在使用 CR 11 R2 我不确定 CR 2013 的选项是否已更改 但在 CR 11 R
  • JavaScript 对象使用 .检索值[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用动态键访问对象 https stackoverflow com questions 6921803 how to access object using dynamic key 我有多个具有不
  • Spring:类文件版本错误 61.0,应该是 55.0

    我正在使用 Java 11 的 Maven 和 IntelliJ IDEA 上的 Maven 我正在尝试创建一个 JsonTset 类 如下所示 import org junit BeforeClass import org junit T
  • Jersey - 有没有办法用参数实例化每个请求资源?

    假设我有这样的课程 Path test public class TestResource private TestService testService public TestResource TestService testServic