WELD-001408: Неудовлетворенные зависимости для типа ObjectMapper с квалификаторами @Default в

Я пытаюсь внедрить ObjectMapper, используя более быстрый XML-джексон, например:

@Inject
private ObjectMapper objectMapper;

но у меня есть следующая ошибка, когда я пытаюсь развернуть файл войны:

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Неудовлетворенные зависимости для типа ObjectMapper с квалификаторами @Default

Это мои зависимости:

    <!-- the core, which includes Streaming API, shared low-level abstractions (but NOT data-binding) -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>
    <!-- Just the annotations; use this dependency if you want to attach annotations
         to classes without connecting them to the code. -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>
    <!-- databinding; ObjectMapper, JsonNode and related classes are here -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>
    <!-- jackson-dataformat-yaml: Support for reading and writing YAML-encoded data via Jackson abstractions -->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>

Что я сделал не так?


person Carlos Laspina    schedule 03.04.2017    source источник
comment
Является ли ObjectMapper инъекционным? Я не думаю, что он снабжен какими-либо подходящими аннотациями CDI.   -  person James R. Perkins    schedule 04.04.2017
comment
в этом случае необходимо создать метод провайдера?   -  person Carlos Laspina    schedule 05.04.2017
comment
Честно говоря, я не знаю, в чем дело, поскольку я не очень хорошо знаю библиотеку, но когда я посмотрел исходный код для ObjectMapper, в нем не было подходящих аннотаций CDI.   -  person James R. Perkins    schedule 05.04.2017
comment
Я нашел решение, основанное на этом потоке с майкой 2 2 и джексоном 2 1"> stackoverflow.com/questions/18872931/   -  person Carlos Laspina    schedule 07.04.2017


Ответы (1)


Я предполагаю, что вам нужен ObjectMapper для его настройки. Для этого вы можете использовать:

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {

    private final ObjectMapper mapper;

    public ObjectMapperContextResolver() {
        mapper = new ObjectMapper();
        // Do some configuration here
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return mapper;
    }

}
person Albert Bos    schedule 07.04.2017