2014-02-13 2 views
1

한 쪽에서 spring-data-rest-webmc의 버전을 최신 2.0.0.RC1 버전의 내 서버로 업데이트했습니다. 이 버전에서는 json 형식이 HAL 형식으로 변경됩니다.봄 데이터 REST의 2.0.0.RC1 이후 인식 할 수없는 필드 "_links"

반대쪽에는 0.9.0.RELEASE 버전의 spring-hateoas 라이브러리를 사용하는 클라이언트가 있습니다. 이 클라이언트에서 ,이 같은 내 서버에서 자원을 얻기 위해 RestTemplate를 사용

AuthorResource authorResource = restTemplate.getForObject(BASE_URL+"authors/"+ authorId, AuthorResource.class); 

AuthorResource 클래스는 ResourceSupport를 확장합니다.

는 지금, 나는이 오류가 :

Nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "_links" (class org.example.hateoas.AuthorResource) 

어떻게 내가 내 고객이 새로운 형식을 지원하도록 구성 할 수 있습니까? 나는

@EnableHypermediaSupport (유형 = EnableHypermediaSupport.HypermediaType.HAL)

을 시도하지만 그것은 작동하지 않습니다. 도움을 청합니다.

답변

2

문제는 스프링 웹이 아닌 컨텍스트 때문에 halMapperObject가 설정되지 않는다는 것입니다. 당신이 덕분에 아주 잘 봄을 알고있는 친구 나 지금 잘 작동이

@Component 
public class EraRestTemplate extends RestTemplate implements InitializingBean { 

@Autowired 
@Qualifier("_halObjectMapper") 
ObjectMapper halObjectMapper; 

static class HALMessageConverter extends MappingJackson2HttpMessageConverter { 

} 

@Override 
public void afterPropertiesSet() throws Exception { 
    halObjectMapper.registerModule(new Jackson2HalModule()); 

    HALMessageConverter converter = new HALMessageConverter(); 
    converter.setObjectMapper(halObjectMapper); 

    this.getMessageConverters().clear(); 
    this.getMessageConverters().add(converter); 
} 
} 

처럼 자신의 RestTemplate 클래스를 만들어야합니다.