当前位置: 首页 > 面试题库 >

使用Jersey和Guice进行RESTful服务的实用建议

左丘宜年
2023-03-14
问题内容

从我在线上可以找到的信息来看,自2008年以来两队陷入僵局以来,Guice + Jersey整合的发展一直停滞不前。问题的症结在于,JAX-
RS批注执行字段和方法注入,而这与Guice自己的依赖项注入不能很好地配合。

我发现的一些示例还不足以阐明:

  • Iqbalyusuf 在Google App Engine Java上的Jersey + Guice上的帖子遭受了很多重复(手动获取并调用注射器)。我希望通过Guice批注在后台进行绑定和注入。

  • Jonathan Curran的文章“ 使用Jersey,Guice和JSR-250创建RESTful服务”给了我希望,因为它的最新版本(2010年),但是除了展示如何在Guice ServletModule内部启动Jersey服务之外,没有其他内容。但是,没有进行任何实际依赖注入的示例。我想这是留给读者的练习。实际上,Curran的职位可能是连接Guice和Jersey的正确的第一步,因此我计划从此开始。

  • 令人着迷的詹姆斯·斯特拉坎写道:

JAX-RS与诸如Spring,Guice,GuiceyFruit或JBossMC之类的依赖项注入框架配合使用非常好-您基本上可以选择任何一个。

但从执业者的角度来看,我看不出任何证据是正确的。

我发现缺少的是有关如何结合使用JAX-RS和Guice批注的实用示例和说明。例如:

  • 我相信我无法将构造函数注入与任何资源一起使用,因为Jersey希望控制这一点
  • 我不确定是否可以将@Inject与@ PathParam,@ QueryParam等结合使用。
  • 如何在MessageBodyWriter实现中使用注入

有没有人提供非平凡应用程序的示例(最好是带有源代码),该示例将Jersey和Guice结合在一起而又不牺牲一个过程中的另一个?无论如何,我都坚持走这条路,但是球衣和吉赛斯名单上的点点滴滴让我觉得我在重复别人之前的工作。


问题答案:

Guice与Jersey的整合并没有停滞。反之亦然。感谢Paul和他的同事在Jersey之后,最新的1.7版本包含一个特殊的JerseyServletModule类,可用于基于Guice的servlet。
基于Guice的构造函数注入JAX-RS资源的工作原理! 问题是在JAX-RS资源的构造html" target="_blank">函数中使用JAX-
RS批注,例如@QueryParam。您不需要它!您一直使用Guice进行POJO注入,包括单例。然后,JAX-RS只是为解析基于HTTP的RESTful
API(例如URL路径,查询参数,内容类型等)锦上添花。您也不需要“工业强度”示例。Guice和Jersey都已经过战斗测试。您只需要一个完整的工作示例来了解其工作原理。然后,您可以自己尝试高级功能。请查看以下链接,获取使用最新版本的Guice
3.0和Jersey 1.7的完整示例:http :
//randomizedsort.blogspot.com/2011/05/using-guice-ified-jersey-in-
embedded.html



 类似资料:
  • 如何开始使用 Jersey 构建 RESTful 服务的快速介绍。这里描述的示例使用轻量级的 Grizzly HTTP 服务器。

  • 我是新泽西Restful web服务和Spring Security的新bie。

  • 本文向大家介绍Jersey实现Restful服务(实例讲解),包括了Jersey实现Restful服务(实例讲解)的使用技巧和注意事项,需要的朋友参考一下 jersey 是基于Java的一个轻量级RESTful风格的Web Services框架。以下我基于IDEA实现Restful完整Demo。 1.创建maven-web工程,后面就是正常的maven工程创建流程。 2.添加Jersey框架的ma

  • 我有一个关于java中Restful Web服务的问题 我完全熟悉链接中的信息以及如何实现Jersey服务。 我使用的路径总是这样: SERVER\u地址可以是192.168.1.104:8080,{username}是PathParam 查看此地址: 我的问题是关于结尾的: 最后,我看到了很多这种地址的例子,但我不知道它们与例如PathParam相比有什么用途。 我们如何在泽西岛创造这样的想法?

  • 我有一组RESTful web服务,通常部署在Glassfish服务器中。问题是,我工作的地方只与Apache一起工作,所以我不得不切换,现在是问题出现的地方。我已经成功地部署了两个RESTful资源,它们工作得很好(它们所做的只是从数据库中检索信息,并在POJO的ArrayList中返回该信息)。 我手动设置了库,甚至下载了该死的JerseyClientBuilder,但这些都不管用。提前谢谢你

  • 问题内容: 我决定将图像作为字节数组存储在数据库中。我遇到错误了。 我的实体模型(带有getter和setter): 然后,我有一种资源来创建如下所示的用户: 该方法来自以下位置: 在测试过程中,我拍摄了一个测试图像,转换为Base64字符串,并使用此站点将其转换为十六进制。但是,出现以下异常: 我在POSTMAN中的实际请求正文是: 问题答案: 那不是有效的JSON。将要发送的字母数字。这不是有