/ / Wie kann eine benutzerdefinierte Eigenschaftsbenennungsstrategie mit MappingJackson2HttpMessageConverter unter Verwendung von XML Config festgelegt werden? - Java, XML, Frühling

Festlegen einer benutzerdefinierten Namensstrategie für Eigenschaften mit MappingJackson2HttpMessageConverter mithilfe von XML Config - Java, XML, Frühling

Ich möchte eine benutzerdefinierte Namensstrategie für definierenjson. Ich versuche, in meiner spring-config.xml eine andere Namensstrategie zu konfigurieren. Ich habe den MappingJackson2HttpMessageConverter als Nachrichtenkonverter mit einem benutzerdefinierten Objekt-Mapper hinzugefügt:

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

Und ich versuche hier einen Objekt-Mapper für den JacksonMessageConvertor zu definieren:

<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "PropertyNamingStrategy" value = "PropertyNamingStrategy.LOWER_CASE" />
</bean>

Das funktioniert nicht; Spring sagt: Der Wert vom Typ "java.lang.String" kann nicht in den erforderlichen Typ "com.fasterxml.jackson.databind.PropertyNamingStrategy" für die Eigenschaft "PropertyNamingStrategy" konvertiert werden

Mein letztendliches Ziel ist es daher, den "Wert" einer propertyNamingStrategy durch meine benutzerdefinierte Klasse zu ersetzen, die propertyNamingStrategy implementiert.

Ich brauche Hilfe bei der Konfiguration mit XML Config.

Antworten:

0 für die Antwort № 1

Wenn Sie eine Eigenschaft zuweisen value = "PropertyNamingStrategy.LOWER_CASE" Spring wertet es als String aus. Was Sie brauchen, ist:

<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "#{T(com.fasterxml.jackson.databind.PropertyNamingStrategy).LOWER_CASE}" />
</bean>

Auch nach den Antworten dazu Frageist auch Folgendes möglich:

<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "LOWER_CASE" />
</bean>

0 für die Antwort № 2

Betrachten Sie den dritten Codeblock unter Abschnitt C.2.2.1 hier gefunden (Eigenschaft staticField). Namen müssen vollständig qualifiziert sein.