Jakarta ee jax-rs上下文解析器<;T>;不可靠

Jakarta ee jax-rs上下文解析器<;T>;不可靠,jakarta-ee,jax-rs,resolver,Jakarta Ee,Jax Rs,Resolver,但我试图理解jax-rs中提供者的用法,但无法理解如何使用ContextResolver。有人能用一些基本的例子来解释这一点吗?您将看到它在解析序列化上下文对象时被大量使用。例如,用于JSON序列化的ObjectMapper。比如说 @Provider @Produces(MediaType.APPLICATION_JSON) public static JacksonContextResolver implements ContextResolver<ObjectMapper> {

但我试图理解jax-rs中提供者的用法,但无法理解如何使用ContextResolver。有人能用一些基本的例子来解释这一点吗?

您将看到它在解析序列化上下文对象时被大量使用。例如,用于JSON序列化的
ObjectMapper
。比如说

@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;
    }
}

这是一个很好的例子。它可以作为工厂使用,根据输入生成对象。您可以阅读中的说明。它没有详细说明它的用途,所以我想它是通用的。如果你能让它工作,那么我想就使用它吧。我还没有找到任何文档说明对于特定的内容类型,应该从
ContextResolver
返回什么类型的对象,但我确实在RestEasy文档中找到了这条注释:
@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(...);
    }
}