依赖注入 – Guice Jersey:实体的自定义序列化
发布时间:2020-12-14 04:52:20 所属栏目:百科 来源:网络整理
导读:我浏览了stackoverflow和web的其余部分以获取示例,但我找不到任何超出 JSON和XML序列化的内容. 在我的webapp中,我希望将我的实体序列化为CSV. 我理解在Jersey中,我可以实现实现MessageBodyWriter和MessageBodyReader接口的提供者(或者这些类是否可以扩展?)
我浏览了stackoverflow和web的其余部分以获取示例,但我找不到任何超出
JSON和XML序列化的内容.
在我的webapp中,我希望将我的实体序列化为CSV. 我理解在Jersey中,我可以实现实现MessageBodyWriter和MessageBodyReader接口的提供者(或者这些类是否可以扩展?)然后让Jersey扫描包并查找并使用这些自定义实现.我怎么用Guice,使用JerseyServletModule做到这一点? 另一个jax-rs框架很好地与guice集成了吗? 谢谢! 解决方法
您可以将绑定添加到您的实现中,而不是扫描包
MessageBodyWriter.例如: 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,Annotation annotations[],MediaType mediaType) { return -1; } @Override public void writeTo(Foo data,MediaType mediaType,MultivaluedMap<String,Object> headers,OutputStream out) throws IOException { // Serialize CSV to out here } } 然后在服务中有一些@Produces(“text / csv”)的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |