Chcę zdefiniować niestandardową strategię nazewnictwa dlajson. Próbuję skonfigurować inną strategię nazewnictwa w moim pliku spring-config.xml. Dodałem MappingJackson2HttpMessageConverter jako konwerter komunikatów z niestandardowym programem odwzorowującym obiekty:
<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>
Próbuję tutaj zdefiniować program odwzorowujący obiekty dla JacksonMessageConvertor:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "PropertyNamingStrategy" value = "PropertyNamingStrategy.LOWER_CASE" />
</bean>
To nie działa; Spring mówi: Nie można przekonwertować wartości typu „java.lang.String” na wymagany typ „com.fasterxml.jackson.databind.PropertyNamingStrategy” dla właściwości „PropertyNamingStrategy”
Moim ostatecznym celem jest zastąpienie wartości „propertyNamingStrategy” moją klasą niestandardową, która implementuje właściwość propertyNamingStrategy.
Potrzebuję pomocy w skonfigurowaniu tego przy użyciu konfiguracji XML.
Odpowiedzi:
0 dla odpowiedzi № 1Kiedy przypisujesz nieruchomość value = "PropertyNamingStrategy.LOWER_CASE"
Spring ocenia go jako String. Potrzebujesz:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "#{T(com.fasterxml.jackson.databind.PropertyNamingStrategy).LOWER_CASE}" />
</bean>
Zgodnie z odpowiedziami na to pytanie pytanie, możliwe jest również następujące:
<bean id="jacksonObjectMapper" class ="com.fasterxml.jackson.databind.ObjectMapper">
<property name = "propertyNamingStrategy" value = "LOWER_CASE" />
</bean>
0 dla odpowiedzi nr 2
Patrząc na trzeci blok kodu w sekcji C.2.2.1 znaleźć tutaj (właściwość staticField). Nazwy muszą być w pełni kwalifikowane.