2017-04-03 12 views
0

에서 @Default와 형 ObjectMapper에 대한 불만족 종속성이 같은 fasterXML 잭슨을 사용하여 ObjectMapper를 주입하려고 :WELD-001408 : 예선이

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

내가 뭘 잘못했는지?

+0

'ObjectMapper'주사 가능합니까? CDI 어휘에 대한 주석이 달렸다고는 생각하지 않습니다. 이 경우 –

+0

이 필요합니다. 공급자 메서드를 만들어야합니까? –

+0

솔직하게 말하면 라이브러리에 대해서는 잘 모르기 때문에 필자는이 경우를 알지 못하지만,'ObjectMapper '에 대한 소스를 살펴보면 CDI 어노테이션이 없다. –

답변

0

일부 구성을 수행하기 위해 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; 
    } 

}