dependency-injection - Guice + Jersey : custom serialization of entities

标签 dependency-injection jersey jax-rs guice

我浏览了 stackoverflow 和 Web 的其余部分以获取示例,但我找不到任何超出 JSON 和 XML 序列化的内容。

例如,在我的 webapp 中,我希望我的实体被序列化为 CSV。

我知道在 Jersey 我可以实现实现 MessageBodyWriter 和 MessageBodyReader 接口(interface)的提供程序(或者这些类要扩展吗?无论如何),然后让 Jersey 扫描一个包并找到并使用这些自定义实现。我如何使用 JerseyServletModule 使用 Guice 来做到这一点?

另一个 jax-rs 框架是否很好地与 guice 集成?

谢谢!

最佳答案

您应该能够将绑定(bind)添加到您的实现中,而不是扫描包
消息体编写器。例如:

public class Config extends GuiceServletContextListener {

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(            
        new JerseyServletModule() {
          @Override
          protected void configureServlets() {
            bind(Service.class);
            bind(CsvWriter.class);
            serve("/services/*").with(GuiceContainer.class);
          }
        });
  }

}

CsvWriter.java 看起来像:

@Singleton
@Produces("text/csv")
@Provider
public class CsvWriter implements MessageBodyWriter<Foo> {

    @Override
    public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
        return Foo.class.isAssignableFrom(type);
    }

    @Override
    public long getSize(Foo data, Class<?> type, Type genericType, Annotation annotations[], MediaType mediaType) {
        return -1;
    }

    @Override
    public void writeTo(Foo data, 
            Class<?> type, Type genericType, Annotation[] annotations,
            MediaType mediaType, MultivaluedMap<String, Object> headers, 
            OutputStream out) throws IOException {
      // Serialize CSV to out here
    }

}

然后在服务中有一些@Produces(“text/csv”)的方法。

关于dependency-injection - Guice + Jersey : custom serialization of entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216321/

相关文章:

java - 将多个数据库(而不是一个)添加到现有应用程序

java - 使用 Eclipse、JBoss 7.1.1 和 Jersey 1 获取 ClassNotFoundException

java - 如何在rest api java中指定路径注释来接受任何路径?

java - 模拟 InboundJaxrsResponse

java - 如何定义@QueryParam 的默认值?

c# - Blazor (.net 7) 中的三种依赖注入(inject)语法有区别吗?

c# - 统一.NET : List of dependencies

android - 如何在 koin 中正确添加两个模块?

java - 带有查询参数的 Jersey DELETE 请求

Spring+Jersey 事务注解