वसंत में ObjectMapper कॉन्फ़िगर करना


91

मेरा लक्ष्य objectMapperइस तरह से कॉन्फ़िगर करना है कि यह केवल धारावाहिक तत्व है जिसके साथ एनोटेट किया गया है @JsonProperty

ऐसा करने के लिए मैंने इस स्पष्टीकरण का पालन ​​किया जो कहता है कि ऑब्जेक्टमैपर को कैसे कॉन्फ़िगर किया जाए।

मैंने यहाँ वर्णित के रूप में कस्टम ऑब्जेक्टमैपर को शामिल किया ।

हालाँकि जब वर्ग NumbersOfNewEventsक्रमबद्ध होता है तब भी इसमें सभी विशेषताएँ शामिल होती हैं।

क्या किसी के पास कोई संकेत है? अग्रिम में धन्यवाद

जैक्सन 1.8.0 वसंत 3.0.5

CustomObjectMapper

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        setVisibilityChecker(getSerializationConfig()
                .getDefaultVisibilityChecker()
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
    }
}

servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="de.Company.backend.web" />

    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

    <bean id="jacksonObjectMapper" class="de.Company.backend.web.CompanyObjectMapper" />
</beans>

NumbersOfNewEvents

public class NumbersOfNewEvents implements StatusAttribute {

    public Integer newAccepts;
    public Integer openRequests;

    public NumbersOfNewEvents() {
        super();
    }
}

जवाबों:


136

स्प्रिंग बूट (1.2.4) और जैक्सन (2.4.6) का उपयोग करते हुए निम्नलिखित एनोटेशन आधारित कॉन्फ़िगरेशन ने मेरे लिए काम किया।

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);

        return mapper;
    }
}

3
स्प्रिंग एप्लीकेशन में जैक्सन के कुछ गुणों को अनुकूलित करने का समर्थन करता है। सामान: docs.spring.io/spring-boot/docs/current/reference/html/…
NangSaigon

10
हे लोगों। मुझे एक समस्या का सामना करना पड़ा जब आप जावा कॉन्फिगर में नाम ऑब्जेक्टमैपर के साथ बीन की घोषणा करते हैं, जैसा कि उदाहरण में दिखाया गया है, इस बीन को स्प्रिंग बूट द्वारा अनदेखा किया जाता है, क्योंकि इस तरह के नाम के साथ बीन पहले से ही सिस्टम में पंजीकृत है, भले ही आप @ @ उस पर प्राथमिक टिप्पणी। इस समस्या को ठीक करने के लिए आपको बीन को अलग नाम से पंजीकृत करना होगा, जैसे jsonObjectMapper, और इसे @ @ वैधानिक एनोटेशन के साथ चिह्नित करें
Demwis

यदि आप स्प्रिंग बूट का उपयोग नहीं कर रहे हैं तो कृपया मेरे उत्तर को देखें ।
डॉरमाउस

एक प्रश्न: आपको कक्षा का नाम देना चाहिए JacksonConfiguration? यह एक स्वचालित तरीका है जो कि स्प्रिंग बूट को जैक्सन के लिए विन्यास वर्ग के रूप में उपयोग करने का निर्देश देता है?
मार्को सुल्ला

क्या यह वास्तव में भी जब काम कर रहा है @EnableWebMvc? मुझे संदेह है क्योंकि ... मेरे उत्तर में देखें : क्यों @EnableWebMvc उपयोग एक समस्या है?
19

25

ऐसा इसलिए हो सकता है क्योंकि मैं स्प्रिंग 3.1 (स्प्रिंग 3.0.5 के बजाय आपके प्रश्न के अनुसार) का उपयोग कर रहा हूं, लेकिन स्टीव ईस्टवुड का जवाब मेरे लिए कारगर नहीं था। यह समाधान स्प्रिंग 3.1 के लिए काम करता है:

अपने वसंत xml संदर्भ में:

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="objectMapper" ref="jacksonObjectMapper" />
        </bean>        
    </mvc:message-converters>
</mvc:annotation-driven>

<bean id="jacksonObjectMapper" class="de.Company.backend.web.CompanyObjectMapper" />

इसने स्प्रिंग 3.1 के साथ जैक्सन 2.x का उपयोग करने में मदद की: stackoverflow.com/questions/10420040/…
Aram Kocharyan

उपयोगी! स्प्रिंग 3.0 से 3.2 में अपग्रेड करने पर मेरे कस्टम ऑब्जेक्टमैपर को पंजीकृत करने के लिए इस दृष्टिकोण को अपनाना पड़ा। पहले एक MAPJacksonJsonView बीन को परिभाषित करते समय एक ऑब्जेक्टमैपर संपत्ति सेट कर रहा था, लेकिन यह अब काम नहीं करता है। यह जैक्सन 1.7 के साथ है
डेविड इस्ले

20

नहीं है org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBeanएक लंबे समय के लिए। स्प्रिंग बूट के 1.2 रिलीज से शुरू org.springframework.http.converter.json.Jackson2ObjectMapperBuilderजावा कॉन्फिग के लिए है।

स्ट्रिंग बूट विन्यास में सरल हो सकता है:

spring.jackson.deserialization.<feature_name>=true|false
spring.jackson.generator.<feature_name>=true|false
spring.jackson.mapper.<feature_name>=true|false
spring.jackson.parser.<feature_name>=true|false
spring.jackson.serialization.<feature_name>=true|false
spring.jackson.default-property-inclusion=always|non_null|non_absent|non_default|non_empty

में classpath:application.propertiesया में कुछ जावा कोड @Configurationवर्ग:

@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.indentOutput(true).dateFormat(new SimpleDateFormat("yyyy-MM-dd"));
    return builder;
}

देख:


2
यदि आप @EnableWebMvc एनोटेशन (स्प्रिंग बूट 2.0.3 में परीक्षण) का उपयोग कर रहे हैं, तो यह ज्यादातर उपयोग के मामलों के लिए काम करता है, हालांकि स्प्रिंग बूट जैकसन कॉन्फ़िगरेशन को अनदेखा किया जाता है।
जॉन

1
हालांकि मैंने परीक्षण नहीं किया कि मुझे यकीन है कि @EnableWebMvc (स्प्रिंग बूट का उपयोग करने या न करने के बावजूद) के साथ काम नहीं करेगा। क्यों? WebMvcConfigurationSupport देखना (DelegatingWebMvcConfiguration फैली WebMvcConfigurationSupport): Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.json()
19

16

मैंने इसे जैक्सन 2.x और स्प्रिंग 3.1.2+ के साथ उपयोग किया है

सर्वलेट-context.xml:

ध्यान दें कि मूल तत्व है <beans:beans>, इसलिए आपको अपने सेटअप के आधार पर इनमें से कुछ तत्वों को निकालने beansऔर जोड़ने की आवश्यकता हो सकती है mvc

    <annotation-driven>
        <message-converters>
            <beans:bean
                class="org.springframework.http.converter.StringHttpMessageConverter" />
            <beans:bean
                class="org.springframework.http.converter.ResourceHttpMessageConverter" />
            <beans:bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <beans:property name="objectMapper" ref="jacksonObjectMapper" />
            </beans:bean>
        </message-converters>
    </annotation-driven>

    <beans:bean id="jacksonObjectMapper"
        class="au.edu.unimelb.atcom.transfer.json.mappers.JSONMapper" />

au.edu.unimelb.atcom.transfer.json.mappers.JSONMapper.java:

public class JSONMapper extends ObjectMapper {

    public JSONMapper() {
        SimpleModule module = new SimpleModule("JSONModule", new Version(2, 0, 0, null, null, null));
        module.addSerializer(Date.class, new DateSerializer());
        module.addDeserializer(Date.class, new DateDeserializer());
        // Add more here ...
        registerModule(module);
    }

}

DateSerializer.java:

public class DateSerializer extends StdSerializer<Date> {

    public DateSerializer() {
        super(Date.class);
    }

    @Override
    public void serialize(Date date, JsonGenerator json,
            SerializerProvider provider) throws IOException,
            JsonGenerationException {
        // The client side will handle presentation, we just want it accurate
        DateFormat df = StdDateFormat.getBlueprintISO8601Format();
        String out = df.format(date);
        json.writeString(out);
    }

}

DateDeserializer.java:

public class DateDeserializer extends StdDeserializer<Date> {

    public DateDeserializer() {
        super(Date.class);
    }

    @Override
    public Date deserialize(JsonParser json, DeserializationContext context)
            throws IOException, JsonProcessingException {
        try {
            DateFormat df = StdDateFormat.getBlueprintISO8601Format();
            return df.parse(json.getText());
        } catch (ParseException e) {
            return null;
        }
    }

}

10

मुझे अब https://github.com/FasterXML/jackson-module-hibernate पर आधारित समाधान मिला

मैंने ऑब्जेक्ट मैपर को बढ़ाया और विरासत में दिए गए कंस्ट्रक्टर में विशेषताओं को जोड़ा।

फिर नए ऑब्जेक्ट मैपर को बीन के रूप में पंजीकृत किया जाता है।

<!-- https://github.com/FasterXML/jackson-module-hibernate -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <array>
            <bean id="jsonConverter"
            class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="objectMapper">
                    <bean class="de.company.backend.spring.PtxObjectMapper"/>
                </property>
            </bean>
        </array>
    </property>
</bean>   

समाधान के लिए बहुत बहुत धन्यवाद! मैंने लगभग चार घंटे तक खुदाई की है <एनोटेशन-चालित> , यह केवल कन्वर्टर्स को नहीं उठाता है। आपके जवाब की कोशिश की, आखिरकार यह काम करता है!
हिमाचली

1
एनोटेशन का उपयोग करने के लिए, आप बस अपने कस्टम मैपर को एनोटेट कर सकते हैं, जो कि विस्तार ObjectMapperकरता है @Componentऔर @Primary। यह स्प्रिंग संदर्भ गाइड में अनुशंसित दृष्टिकोण है और इसने मेरे लिए ठीक काम किया है।
ओल्गामासीज़ेक

9

यदि आप कस्टम सीरिज रजिस्टर करने के लिए कस्टम ObjectMapper जोड़ना चाहते हैं, तो मेरा उत्तर आज़माएँ।

मेरे मामले में (स्प्रिंग 3.2.4 और जैक्सन 2.3.1), कस्टम धारावाहिक के लिए XML कॉन्फ़िगरेशन:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="false">
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper">
                <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                    <property name="serializers">
                        <array>
                            <bean class="com.example.business.serializer.json.CustomObjectSerializer"/>
                        </array>
                    </property>
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

अस्पष्टीकृत तरीके से कुछ के द्वारा डिफ़ॉल्ट रूप से वापस लिख दिया गया था।

यह मेरे लिए काम किया:

CustomObject.java

@JsonSerialize(using = CustomObjectSerializer.class)
public class CustomObject {

    private Long value;

    public Long getValue() {
        return value;
    }

    public void setValue(Long value) {
        this.value = value;
    }
}

CustomObjectSerializer.java

public class CustomObjectSerializer extends JsonSerializer<CustomObject> {

    @Override
    public void serialize(CustomObject value, JsonGenerator jgen,
        SerializerProvider provider) throws IOException,JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeNumberField("y", value.getValue());
        jgen.writeEndObject();
    }

    @Override
    public Class<CustomObject> handledType() {
        return CustomObject.class;
    }
}

<mvc:message-converters>(...)</mvc:message-converters>मेरे समाधान में कोई XML कॉन्फ़िगरेशन ( ) की आवश्यकता नहीं है।


6

मैं स्प्रिंग 4.1.6 और जैक्सन फास्टरएक्सएमएल 2.1.4 का उपयोग कर रहा हूं।

    <mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <!-- 设置不输出null字段-->
                        <property name="serializationInclusion" value="NON_NULL"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

यह मेरे applicationContext.xml कॉन्फ़िगरेशन पर काम करता है


6

समाधान 1

विशेष रूप से @EnableWebMvc का उपयोग करते समय उपयोगी पहला कार्य समाधान (परीक्षण)

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private ObjectMapper objectMapper;// created elsewhere
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        // this won't add a 2nd MappingJackson2HttpMessageConverter 
        // as the SOLUTION 2 is doing but also might seem complicated
        converters.stream().filter(c -> c instanceof MappingJackson2HttpMessageConverter).forEach(c -> {
            // check default included objectMapper._registeredModuleTypes,
            // e.g. Jdk8Module, JavaTimeModule when creating the ObjectMapper
            // without Jackson2ObjectMapperBuilder
            ((MappingJackson2HttpMessageConverter) c).setObjectMapper(this.objectMapper);
        });
    }

समाधान २

बेशक आम दृष्टिकोण नीचे काम करता है (@EnableWebMvc के साथ भी काम कर रहा है):

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private ObjectMapper objectMapper;// created elsewhere
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        // this will add a 2nd MappingJackson2HttpMessageConverter 
        // (additional to the default one) but will work and you 
        // won't lose the default converters as you'll do when overwriting
        // configureMessageConverters(List<HttpMessageConverter<?>> converters)
        // 
        // you still have to check default included
        // objectMapper._registeredModuleTypes, e.g.
        // Jdk8Module, JavaTimeModule when creating the ObjectMapper
        // without Jackson2ObjectMapperBuilder
        converters.add(new MappingJackson2HttpMessageConverter(this.objectMapper));
    }

क्यों @EnableWebMvc उपयोग एक समस्या है?

@EnableWebMvc का उपयोग किया DelegatingWebMvcConfigurationजा रहा है WebMvcConfigurationSupportजो इसका विस्तार करता है:

if (jackson2Present) {
    Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.json();
    if (this.applicationContext != null) {
        builder.applicationContext(this.applicationContext);
    }
    messageConverters.add(new MappingJackson2HttpMessageConverter(builder.build()));
}

जिसका अर्थ है कि @EnableWebMvc का उपयोग करते समय ObjectMapperडिफ़ॉल्ट बनाने के लिए इसका उपयोग करने के लिए तैयार करने के उद्देश्य से अपना खुद का इंजेक्शन लगाने का कोई तरीका नहीं है MappingJackson2HttpMessageConverter


महान! वास्तव में RepositoryRestMvcConfiguration, spring-data-rest-webmvc का हिस्सा: 3.2.3 स्प्रिंग द्वारा बनाए गए ObjectMapper का उपयोग नहीं करता है और केवल कस्टम ऑब्जेक्टMapper मॉड्यूल के साथ आउट-ऑफ-द-बॉक्स काम नहीं करता है। पहला दृष्टिकोण वास्तविक है और स्प्रिंग-डेटा-रेस्ट-वेबमिक्स द्वारा अनुकूलित ऑब्जेक्टमैपर को प्रतिस्थापित करें। धन्यवाद!
वाल्टोनी बोवेंटुरा

मेरे पास एक ऐसा मुद्दा था जहां मैं अपने ObjectMapper को अनुकूलित नहीं कर सका जो कि EnableWebMvc का दुस्साहस b / c था। इसलिए खुशी है कि मैं इस पर ठोकर खाई।
इवान व्हाइट

3

स्प्रिंग बूट में 2.2.xआपको इसे इस तरह कॉन्फ़िगर करना होगा:

@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
    return builder.build()
}

Kotlin:

@Bean
fun objectMapper(builder: Jackson2ObjectMapperBuilder) = builder.build()

2

MappingJacksonHttpMessageConverterयदि आप केवल कॉन्फ़िगर करने का इरादा रखते हैं , तो स्प्रिंग 4 से ऊपर, कॉन्फ़िगर करने की कोई आवश्यकता नहीं है ObjectMapper

(कॉन्फ़िगर MappingJacksonHttpMessageConverterकरने से आपको अन्य MessageConverter खोने का कारण होगा)

आपको बस करने की आवश्यकता है:

public class MyObjectMapper extends ObjectMapper {

    private static final long serialVersionUID = 4219938065516862637L;

    public MyObjectMapper() {
        super();
        enable(SerializationFeature.INDENT_OUTPUT);
    }       
}

और अपने स्प्रिंग कॉन्फ़िगरेशन में, यह बीन बनाएँ:

@Bean 
public MyObjectMapper myObjectMapper() {        
    return new MyObjectMapper();
}

काम नहीं करता है - - customObjectMapper: क्लास पथ संसाधन [com / config.class] में विधि 'customObjectMapper' द्वारा परिभाषित -_halObjectMapper: defined in null
Angshuman Agarwal

1
और यह केवल स्प्रिंग बूट के साथ काम करेगा। सादे वसंत वेब नहीं।
डोरमाऊस

2

सादे वसंत-वेब में एक संदेश कनवर्टर को कॉन्फ़िगर करने के लिए, इस मामले में जावा 8 JSR-310 JavaTimeModule को सक्षम करने के लिए, आपको पहले WebMvcConfigurerअपनी @Configurationकक्षा में लागू करना होगा और फिर configureMessageConvertersविधि को ओवरराइड करना होगा :

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().modules(new JavaTimeModule(), new Jdk8Module()).build()
            .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
    converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
}

इस तरह आप ObjectMapperजावा-आधारित स्प्रिंग कॉन्फ़िगरेशन में परिभाषित किसी भी कस्टम को पंजीकृत कर सकते हैं ।


मैं ObjectMapper इंजेक्शन और स्प्रिंग बूट के माध्यम से कॉन्फ़िगर करना पसंद करेंगे।
कांस्टेंटिनो क्रोनमबर्गर

1
ज़रूर, अगर आप स्प्रिंग बूट का उपयोग करते हैं। यह एक स्प्रिंग बूट सवाल नहीं था।
डॉरमॉज़

हां, यह ध्यान रखना दिलचस्प है कि स्प्रिंग बूट के साथ स्प्रिंग वेब का उपयोग करते समय यह स्प्रिंग बूट द्वारा प्रदान किए गए ऑब्जेक्टमैपर का उपयोग नहीं करता है और इसीलिए मैंने इस प्रश्न को समाप्त कर दिया जिससे मुझे मदद मिली।
कांस्टेंटिनो क्रोनमबर्गर

यह सभी डिफ़ॉल्ट संदेश कन्वर्टर्स को साफ़ कर देगा! मुझे पूरा यकीन है कि कोई भी ऐसा नहीं चाहता है। समाधान के लिए मेरा जवाब देखें ।
19

यदि आप संदेश कन्वर्टर्स का विस्तार करना चाहते हैं तो सही समाधान को स्प्रिंग डॉक्यूमेंटेशन केextendMessageConverters अनुसार ओवरराइड करना होगा । लेकिन मुझे इसकी कोई आवश्यकता नहीं थी, क्योंकि मुझे बस एक अनुकूलित की आवश्यकता है । MappingJackson2HttpMessageConverter
डॉरमहाउस

1

मैं स्प्रिंग 3.2.4 और जैक्सन फास्टरएक्सएमएल 2.1.1 का उपयोग कर रहा हूं।

मैंने एक कस्टम जैक्सनऑब्जेक्टमैपर बनाया है जो मैप की गई प्रत्येक विशेषता के लिए स्पष्ट एनोटेशन के साथ काम करता है:

package com.test;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class MyJaxbJacksonObjectMapper extends ObjectMapper {

public MyJaxbJacksonObjectMapper() {

    this.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
            .setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.ANY)
            .setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
            .setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
            .setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE);

    this.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    }
}

फिर यह संदर्भ-विन्यास ( सर्वलेट-संदर्भ.एक्सएमएल ) में त्वरित किया जाता है :

<mvc:annotation-driven>
    <mvc:message-converters>

        <beans:bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <beans:property name="objectMapper">
                <beans:bean class="com.test.MyJaxbJacksonObjectMapper" />
            </beans:property>
        </beans:bean>

    </mvc:message-converters>
</mvc:annotation-driven>

यह ठीक काम करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.