Wie erhalte ich den Jackson ObjectMapper, der von Spring 4.1 verwendet wird?
Spring 4.1 wird eine Jackson ObjectMapper
Instanz. Ich habe Grund zu wollen, um @Autowire
Sie, dass die Instanz zu einem meiner Controller: Der controller hat einige kleinere JSON Parsen von seinen eigenen mit Jackson, aber die ObjectMapper
es verwendet werden sollte, die eine und dieselbe Instanz, die Quelle selbst verwendet wird. Wie kann ich das vollbringen?
Beachten Sie, dass ich mich nicht zu Fragen, wie Sie zu konfigurieren der ObjectMapper
im Einsatz von Spring, ich bin glücklich mit den Standardeinstellungen. Ich will nur Fische die Instanz, die verwendet wird, indem die Feder aus, so dass ich re-verwenden Sie die vorhandene Instanz in meinem eigenen code.
InformationsquelleAutor der Frage Adam Maass | 2015-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn man mit Spring Boot mit Jackson auf Ihrem classpath und default-Implementierung für die JSON-Analyse in Ihre REST-controller, dann sollte dies funktionieren:
InformationsquelleAutor der Antwort Tuno
Wenn man einen Blick auf
MappingJackson2HttpMessageConverter
Sie werden sehen, dass es schafft eine neueObjectMapper
aber nicht setzen es als eine Bohne. Es gibt eine get-Methode, aber die einzige Möglichkeit, die ich gefischt habe es in der Vergangenheit aus ist wenn ich die erstellt habeMappingJackson2HttpMessageConverter
mich, z.B.Wenn Sie die Arbeit mit Spring Boot, es gibt eine Abschnitt in der Bedienungsanleitung gewidmet, um die Arbeit mit der
ObjectMapper
Wenn Sie erstellen ein Standard -Jackson2ObjectMapperBuilder
@Bean
Sie sollten in der Lage sein, um autowire, die gleichenObjectMapper
Instanz im controller.InformationsquelleAutor der Antwort Emerson Farrugia
Wie gesagt, von anderen, Sie können nicht
@Autowired
es direkt in den controller.@Emerson Farrugia ' s Vorschlag zum erstellen einer neuen Instanz mit
auch für mich nicht funktioniert, weil die erhaltene Instanz wurde nicht nach der
spring.jackson.*
Konfiguration Eigenschaften, die ich brauchte, es zu.Die Lösung, die ich fand war die Erlangung der ObjectMapper von Spring
MappingJackson2HttpMessageConverter
ist injizierbare.Also ich autowired:
bekomme und dann die ObjectMapper von es so:
Diesem Beispiel verhält sich genau so wie Spring MVC eigenen nachrichtenkonvertierung wohl ist der gleichen Instanz sowieso.
InformationsquelleAutor der Antwort netmikey
Eine zwei-stepper, wenn Sie werden;
In Ihrem
@SpringBootApplication
Klasse hinzufügen:Überall, das Sie verwenden möchten
ObjectMapper
:Frieden!
InformationsquelleAutor der Antwort Sharan Arumugam
Wenn Sie versuchen, @Autowire die MappingJackson2HttpMessageConverter es gibt Sie:
No qualifying bean of type 'org.springframework.http.converter.json.MappingJackson2HttpMessageConverter' available: expected single matching bean but found 4: mappingJackson2HttpMessageConverter,jacksonHttpMessageConverter,halJacksonHttpMessageConverter,alpsJsonHttpMessageConverter
.Dies ist nicht ein großes Problem, können Sie einfach ändern Sie die variable name auf eine der oben genannten zu bekommen, Beispiel:
@Autowired
private MappingJackson2HttpMessageConverter halJacksonHttpMessageConverter;
InformationsquelleAutor der Antwort AngelVel