Jay*_*thi 5 jax-rs resolver jakarta-ee
但是我试图了解 jax-rs 中 Providers 的用法。但无法理解如何使用 ContextResolver。有人可以用一些基本的例子来解释这一点吗?
您将看到它在解析序列化上下文对象时被大量使用。例如ObjectMapperJSON 序列化。例如
@Provider
@Produces(MediaType.APPLICATION_JSON)
public static JacksonContextResolver implements ContextResolver<ObjectMapper> {
private final ObjectMapper mapper;
public JacksonContextResolver() {
mapper = new ObjectMapper();
}
@Override
public ObjectMapper getContext(Class<?> cls) {
return mapper;
}
}
Run Code Online (Sandbox Code Playgroud)
现在会发生什么是杰克逊提供商,即JacksonJsonProvider,序列化时,会先看看是否已经给出了它ObjectMapper,如果没有它会查找一个ContextResolver为ObjectMapper并调用getContext(classToSerialize)获得ObjectMapper。所以这真的是一个机会,如果我们想使用传递的来做一些逻辑Class来确定哪个映射器(如果有多个)用于哪个类。对我来说,我一般只用它来配置映射器。
这个想法是你可以在某些上下文中查找任意对象。您将如何查找 的一个示例ContextResolver是通过Providers可注入接口。例如在资源类中
@Path("..")
public class Resource {
@Context
private Providers provider;
@GET
public String get() {
ContextResolver<ObjectMapper> resolver
= providers.getContextResolver(ObjectMapper.class, MediaType.APPLICATION_JSON);
ObjectMapper mapper = resolver.getContext(...);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3998 次 |
| 最近记录: |