当前位置: 首页 > 面试题库 >

Spring 4和Rest WS集成

越霖
2023-03-14
问题内容

我一直在做Spring4和RestWS集成的POC。我对这两者都是陌生的,仅仅接触了一周。我正在按照博客的指示进行操作。我了解到,在Spring
4和restWS设置中,将使用jackson-core / anotation / databind 2进行JSON <->
Java对象的正确消息转换。也org.springframework.http.converter.json.MappingJackson2HttpMessageConverter用于消息转换。我满足了所有这些要求。但是,当我尝试启动应用程序时,出现bean创建异常。叠

严重:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener的侦听器实例的异常
org.springframework.beans.factory.BeanCreationException:创建名称为“ regionController”的bean时出错:自动连接依赖项的注入失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动连线字段:私有org.springframework.web.servlet.View com.leggmason.lmpamfs.controllers.RegionController.jsonView_i; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义的名称为'org.springframework.web.servlet.view.json.MappingJacksonJsonView#0'的bean创建时出错:实例化bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.servlet.view.json.MappingJacksonJsonView]:构造方法抛出了异常;
    在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)上
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)处
    在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:304)
    在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703)
    在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
    在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4961)
    在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5455)
    在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1559)
    在org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1549)
    在java.util.concurrent.FutureTask.run(未知来源)
    在java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)
    在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)
    在java.lang.Thread.run(未知来源)
原因:org.springframework.beans.factory.BeanCreationException:无法自动连线字段:私有org.springframework.web.servlet.View com.leggmason.lmpamfs.controllers.RegionController.jsonView_i; 嵌套的异常是org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义的名称为'org.springframework.web.servlet.view.json.MappingJacksonJsonView#0'的bean创建时出错:实例化bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.servlet.view.json.MappingJacksonJsonView]:构造方法抛出了异常;嵌套的异常是java.lang.NoClassDefFoundError:org / codehaus / jackson / map / ObjectMapper
    在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)处
    在org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)处
    ...另外22个
由以下原因引起:org.springframework.beans.factory.BeanCreationException:在ServletContext资源[/WEB-INF/applicationContext.xml]中定义的名称为'org.springframework.web.servlet.view.json.MappingJacksonJsonView#0'的bean创建时出错:实例化bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.servlet.view.json.MappingJacksonJsonView]:构造方法抛出了异常;嵌套的异常是java.lang.NoClassDefFoundError:org / codehaus / jackson / map / ObjectMapper
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1076)
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1021)处
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)处
    在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:304)
    在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
    在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    在org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017)处
    在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
    在org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858)
    在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)处
    ...另外24个
由以下原因引起:org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.web.servlet.view.json.MappingJacksonJsonView]:构造方法抛出异常;嵌套的异常是java.lang.NoClassDefFoundError:org / codehaus / jackson / map / ObjectMapper
    在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:164)
    在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89)
    在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1069)处
    ...另外35个
造成原因:java.lang.NoClassDefFoundError:org / codehaus / jackson / map / ObjectMapper
    在org.springframework.web.servlet.view.json.MappingJacksonJsonView(MappingJacksonJsonView.java:65)
    在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
    在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源)
    在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知来源)
    在java.lang.reflect.Constructor.newInstance(未知来源)
    在org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
    ...更多37
引起原因:java.lang.ClassNotFoundException:org.codehaus.jackson.map.ObjectMapper
    在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ...更多43

似乎 MappingJacksonJsonView 类出了点问题。能否从工厂文件中查找原因是造成麻烦的原因?

 <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">  
       <property name="contentType" value="text/plain"/>  
  </bean>

我是否也应该替换此类?我将帮助您解决此问题。

谢谢,Suvojit


问题答案:

您当前正在使用MappingJacksonJsonView旨在与Jackson1配合使用的。

您提到以下内容:

我没有使用Jackson 1 API。我的lib中的jar是jackson-core-2.0.2,jackson-
annotation-2.3.0,jackson-bindings 2.3.0。

这意味着您在类路径中有Jackson2。Jackson1和Jackson2不兼容(不同的程序包,不同的类等)。

您有2种可能的解决方案

  1. 不要使用Jackson2并将依赖项切换到Jackson1
  2. 将替换MappingJacksonJsonViewMappingJackson2JsonView


 类似资料:
  • 我无法让Log4j2在日志文件上写入Spring和Spring Security日志消息(后者我绝对需要解决一个问题)。我在这里和其他地方读了很多(当然,就像在Spring参考中),但我无法使我找到的解决方案适用于我的案例。 需要注意的是,在下面的两个解决方案中,地雷日志记录消息和hibernate消息都正确地写入了文件。该问题只影响Spring消息。 据我所知,Spring使用jcl(commo

  • 我们使用Jasypt加密一些配置属性(数据库密码),但由于解密密钥存储在每个环境的文件系统中,因此我们必须手动进行配置以从文件中加载密码,然后用覆盖加载属性。 因为它是手动的,所以我们不得不在类的中运行这段代码,并且(尽管这还没有发生)在使用对的调用配置数据源bean之后,可能会加载这些代码--给出空指针异常。加载将是一个选项,但显然这意味着我们将使用脆弱的配置,这是我们希望避免的。 最终,我们希

  • 我花了两天时间阅读了关于这个问题的每一篇文章,我可以肯定地说,我被牢牢地卡住了。如有任何帮助,我们将不胜感激。 亚历克斯

  • 我不知道如何进行堆栈跟踪: NullPointerException

  • 我尝试制作示例代码来研究jms。我遇到了一些错误。所以,我搜索了一些解决错误的文章。我放弃了,因为我找不到如何使用spring4在ActiveMQ中设置代理。请给我一些建议或解决问题。 这是一个错误。 这是我的Spring配置文件。 而且,当我尝试设置使用ActiveMQConnectionFactory的CachingConnectionFactory时,它带来了错误。然而,在这个站点(http

  • 我正在学习如何使用Spring4构建RESTful web服务,但有一点我不清楚,那就是@RequestMapping。我见过使用的示例,以及使用consumes(或produces)的其他示例。 例如,在我自己的@RESTController类中,我有这个函数... 使用与使用consumes甚至使用? 有人能解释一下头和消费/生产之间的区别,以及它们是何时使用的吗?