Spring MVC 3.1 est-il compatible avec Jackson 2.0? La détection automatique de Jackson par Spring MVC sur le chemin de classe et la délégation à Jackson pour les demandes avec un type de contenu JSON fonctionnent-elles encore?
La prise en charge de Jackson 2 a été ajoutée à Spring 3.2 et a également été rétroportée à Spring 3.1.2 ( SPR-9507 )
Keith Donald (de source printanière) a tweeté ce qui suit il y a quelque temps.
Prise en charge de Spring MVC pour Jackson 2; fonctionne également avec le natif de Jackson Fonction "joli imprimé" https://Gist.github.com/2423129
Je n'ai pas essayé le MappingJackson2HttpMessageConverter
trouvé dans le Gist ci-dessus mais cela me surprendrait si cela ne fonctionnait pas.
Depuis Spring 3.1.2, vous devez simplement ajouter jackson-databind jar à votre chemin d'accès aux classes.
Dans Maven, vous pouvez le configurer comme ceci:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
Le reste de la magie se fera automatiquement au printemps.
Voir: http://norrisshelton.wordpress.com/2012/07/15/spring-3-mvc-with-json-via-jackson-2-0/
Pour le printemps 3.1.2 et Jackson 2 -
Comme indiqué ci-dessus, le support automatique JustWorks ™
mais la configuration ne fonctionne pas, car la plupart du Web est jonché de mécanismes de configuration pré-Spring3/Jackson2
Donc pour la postérité, je vais lister un hack (? Ou est-ce la manière officielle) de configurer le convertisseur de Jackson. Dans ce cas particulier, je configure le convertisseur pour renvoyer les dates au format ISO-8601:
package foo.bar.JacksonConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
@Component
public class JacksonConfig implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter =
(MappingJackson2HttpMessageConverter) bean;
ObjectMapper objectMapper = jsonConverter.getObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
jsonConverter.setObjectMapper(objectMapper);
}
return bean;
}
}
Pour être clair, Spring 3.1 n'a pas de support natif pour Jackson 2. C'est dans Spring 3.2
Je n'ai pas testé Spring MVC 3.1 compatible avec Jackson 2.0. Mais je rencontre un problème compatible 3.0.5. Enfin, je trouve que Spring MVC 3.0.5 est uniquement compatible avec Jackson 1.0.0, définitivement Jackson 1.5.3 n’est pas compatible !!!