2015-05-25 5 views
0

Я использовал jackson 1 в старом проекте. Теперь, я хотел бы использовать jackson 2 в проекте весны 4. Но у меня проблема с интеграцией джексона.весна 4 и jackson 2

конфигурации джексон весной диспетчеру:

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" /> 
<bean id="jacksonSerializationConfig" class="com.fasterxml.jackson.databind.SerializationConfig" 
    factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" /> 
<bean 
    class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject" ref="jacksonSerializationConfig" /> 
    <property name="targetMethod" value="setSerializationInclusion" /> 
    <property name="arguments"> 
     <list> 
      <value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_DEFAULT</value> 
     </list> 
    </property> 
</bean> 
<bean 
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <bean 
       class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
       <property name="objectMapper" ref="jacksonObjectMapper" /> 
      </bean> 
     </list> 
    </property> 
</bean> 

и здесь мои dependecies используя Gradle:

dependencies{ 
    compile project('LiveLizard-BackEndGradle') 
    compile 'javax.servlet:jstl:1.2' 
    compile 'javax.servlet:javax.servlet-api:3.1.0' 
    compile 'org.springframework:spring-context:4.1.6.RELEASE' 
    compile 'org.springframework:spring-core:4.1.6.RELEASE' 
    compile 'org.springframework:spring-webmvc:4.1.6.RELEASE' 
    compile 'org.springframework:spring-tx:4.1.6.RELEASE' 
    compile 'org.springframework:spring-jdbc:4.1.6.RELEASE' 
    compile 'org.springframework:spring-orm:4.1.6.RELEASE' 
    compile 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Draft-16' 
    compile 'org.hibernate:hibernate-core:4.3.8.Final' 
    compile 'org.aspectj:aspectjweaver:1.8.5' 
    compile 'mysql:mysql-connector-java:5.1.35' 
    compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final' 
    compile 'junit:junit:4.4' 
    compile 'javax.validation:validation-api:1.1.0.Final' 
    compile 'org.hibernate:hibernate-validator:5.1.3.Final' 
    compile 'org.thymeleaf:thymeleaf-spring4:2.1.4.RELEASE' 
    compile 'com.fasterxml.jackson.core:jackson-core:2.5.3' 
    compile 'com.fasterxml.jackson.core:jackson-databind:2.5.3' 
    compile 'com.fasterxml.jackson.core:jackson-annotations:2.5.3' 
} 

, когда я пытаюсь обед проекта у меня есть это сообщение:

Error creating bean with name 'org.springframework.beans.factory.config.MethodInvokingFactoryBean#0' defined in ServletContext resource [/WEB-INF/springmvcdispatcher-servlet.xml]: Error converting typed String value for bean property 'arguments' with key [0]; nested exception is java.lang.ClassNotFoundException: org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion 

Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion 

ответ

1

JsonSerialize.Inclusion теперь определен в com.fasterxml.jackson.databind.annotation, но это depreca Ted в пользу com.fasterxml.jackson.annotation.JsonInclude

В Java конфигурации, вы можете настроить это следующим образом:

MappingJackson2HttpMessageConverter converter = 
    new MappingJackson2HttpMessageConverter(); 
converter.getObjectMapper().setSerializationInclusion(
     JsonInclude.Include.NON_DEFAULT 
); 
+0

Спасибо за ответ, но я beginer с весной и я не НАСТОЯЩЕМУ inderstand. Вы используете java-код для его настройки, но как я могу сделать то же самое в моем XML-файле, пожалуйста? –

Смежные вопросы