Heim >Java >javaLernprogramm >Wie kann ich verhindern, dass Jackson im Frühjahr nicht abgerufene Lazy-Attribute serialisiert?
Behebung des Serialisierungsproblems bei Lazy-Objekten mit Jackson
Ihr Wunsch, Jackson daran zu hindern, nicht abgerufene Lazy-Attribute zu serialisieren, hat eine einfache Lösung. Dank des wertvollen Inputs von indybee haben wir eine Lösung gefunden, die mit Ihren aktuellen Spring-, Hibernate- und Jackson-Versionen funktioniert.
Spring-Versionen 3.1.2 und höher führen einen erweiterten MappingJackson2HttpMessageConverter ein, der die Funktionalität von enthält benutzerdefinierter Konverter, der im Spring 3.1-Tutorial erwähnt wird. Um diesen Konverter zu nutzen, erweitern Sie Ihre Spring-Konfigurationsklasse von WebMvcConfigurerAdapter und überschreiben Sie die Methode configureMessageConverters.
Fügen Sie innerhalb der Methode configureMessageConverters den MappingJackson2HttpMessageConverter mit dem registrierten Hibernate4Module hinzu. In der Java-Konfiguration könnte dies wie folgt aussehen:
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(jacksonMessageConverter()); super.configureMessageConverters(converters); }
Erstellen Sie für eine XML-Konfiguration einen benutzerdefinierten HibernateAwareObjectMapper, wie im Tutorial vorgeschlagen:
<mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.pastelstudios.json.HibernateAwareObjectMapper" /> </property> </bean> </mvc:message-converters>
Diese Lösung integriert das Hibernate4Module nahtlos in die Standardeinstellung von Spring Nachrichtenkonverter, der sicherstellt, dass nicht abgerufene Lazy-Objekte nicht von Jackson serialisiert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass Jackson im Frühjahr nicht abgerufene Lazy-Attribute serialisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!