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 № 1Wenn 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.