J'ai la configuration du haricot jackson
ci-dessous. Comment puis-je ajouter la fonctionnalité ToXmlGenerator.Feature.WRITE_XML_DECLARATION
au constructeur?Comment ajouter ToXmlGenerator.Feature à Jackson2ObjectMapperBuilderCustomizer?
Ce qui suit ne fonctionne pas:
@Bean
public Jackson2ObjectMapperBuilderCustomizer initJackson() {
return (builder) -> builder.modules(new JaxbAnnotationModule())
.defaultUseWrapper(false)
.featuresToEnable(ToXmlGenerator.Feature.WRITE_XML_DECLARATION); //invalid!
}
Résultat:
Constructor a jeté exception; exception imbriquée est org.springframework.beans.factory.BeanCreationException: Erreur création d'haricot avec le nom 'mappingJackson2XmlHttpMessageConverter' défini dans la ressource de chemin de classe [org/springframework/boot/autoconfiguration/web/JacksonHttpMessageConvertersConfiguration $ MappingJackson2XmlHttpMessageConverterConfiguration.class]: Bean l'instanciation via la méthode d'usine a échoué; exception imbriquée est org.springframework.beans.BeanInstantiationException: Impossible de instancier [org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter]: méthode Factory 'mappingJackson2XmlHttpMessageConverter' a lancé exception; exception imbriquée est org.springframework.beans.FatalBeanException: classe d'entités Unknown: com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator $ Caractéristiques
Mon objectif initial est d'ajouter la ligne suivante lors de la désérialisation:
<?xml version="1.0" encoding="UTF-8"?>
.
Peut-être qu'il y a une manière différente au lieu d'utiliser le ToXmlGenerator
?
J'ai aussi essayé ce qui suit, mais cela ne pas non plus ajouter la ligne de déclaration xml:
@Bean
@Primary
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
XmlMapper mapper = (XmlMapper) builder
.createXmlMapper(true)
.build();
mapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
return mapper;
}