2015-03-04 12 views
13

Yayında @ResponseBody ile açıklanmış tüm denetleyiciler için FAIL_ON_EMPTY_BEANS yayını devre dışı bırakabilen bir genel yapılandırma var mı? uygulamanızda tam olarak nasıl yapılacağı bilmek istiyorsanız configureMessageConvertersİlkbahar ve jackson, FAIL_ON_EMPTY_BEANS'ı devre dışı bırakma @ResponseBody

@Bean 
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
    MappingJackson2HttpMessageConverter converter = 
     new MappingJackson2HttpMessageConverter(mapper); 
    return converter; 
} 

yapılandırırken

cevap

21

Sen, nesne eşleyicisi yapılandırabilir, yapılandırma dosyaları (xml veya java yapılandırmaları) ile sorunuzu güncelleyin.

İşte iyi bir article mesaj dönüştürücülerini nasıl özelleştirebilirsiniz.

Düzenleme: XML'de

public class MyJsonMapper extends ObjectMapper {  
     public MyJsonMapper() { 
      this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 
     } 
} 

şöyle yerine Java yapılandırmaları XML'ini kullanıyorsanız, özel yapılandırma ile ObjectMapper uzanan özel bir MyJsonMapper sınıfı oluşturmak ve sonra kullanabilirsiniz:

<mvc:annotation-driven> 
     <mvc:message-converters> 
      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
       <property name="objectMapper" ref="jacksonObjectMapper" /> 
      </bean> 
     </mvc:message-converters> 
</mvc:annotation-driven> 


<bean id="jacksonObjectMapper" class="com.mycompany.example.MyJsonMapper" > 
+0

XML örnek aldınız mı? teşekkürler – tgkprog

+0

Lütfen düzenlenmiş cevabı inceleyin. – vtor

+7

Spring Boot kullanıyorsanız, bunu yapabilirsiniz: "spring.jackson.serialization.FAIL_ON_EMPTY_BEANS = false" – DKroot

18

Spring Boot kullanıyorsanız, application.properties dosyasında aşağıdaki özelliği ayarlayabilirsiniz. Onun değerli yorum için @DKroot için

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false

teşekkürler. Ama bunun başkaları için kendi cevabı olması gerektiğine inanıyorum.

+1

İyi bir ipucu, ama Spring HATEOAS'ın kendi nesne eşleyicisini oluşturduğu için, HAL ile çalışmamaya dikkat edin. https://github.com/spring-projects/spring-hateoas/issues/333 – Jannik

İlgili konular