maven快速入门番外篇——使用maven整合SSH报错:java.lang.IllegalStateException: Cannot convert value of type...
发布日期:2021-06-30 17:54:58 浏览次数:2 分类:技术文章

本文共 3614 字,大约阅读时间需要 12 分钟。

问题描述

今天我使用maven整合SSH时,创建了一个如下结构的聚合工程。

在这里插入图片描述
从上图可以看出,我的项目结构是一个父工程与多个子工程。其中,crm-web子工程依赖于crm-service子工程,crm-service子工程又依赖于crm-dao子工程。当所有子工程的代码开发好之后,通过crm-web子工程的pom.xml文件中配置的tomcat7插件来运行crm-web子工程时,该子工程确实是部署到tomcat服务器上去了,并成功运行起来了,如下图所示。
在这里插入图片描述
但是,通过Google Chrome浏览器访问http://localhost:8080/crm/customer_list这样的url地址时,给我报错了,错误提示信息如下图所示。
在这里插入图片描述
下面是更精准的错误提示信息。仔细看看,你知道出错的根本原因了吗?

java.lang.IllegalStateException: Cannot convert value of type [com.sun.proxy.$Proxy51 implementing com.meimeixia.crm.service.ICustomerService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.meimeixia.crm.service.impl.CustomerService] for property 'customerService': no matching editors or conversion strategy found	org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:302)	org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576)	org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:603)	org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:204)	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1527)	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1486)	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226)	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)	org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1048)	com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:161)	com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:178)	com.opensymphony.xwork2.factory.DefaultActionFactory.buildAction(DefaultActionFactory.java:22)	com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:148)	com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:295)	com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:395)	com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)	org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)	org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)	com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554)	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)

出错原因

根据上面详细的错误提示信息可知,报错的根本原因就是Spring在转换时,主要是将代理类转换成接口,而不能转换成实际类。

解决办法

在使用Spring进行aop开发的时候,需要设置proxy-target-class这个属性的值,以决定是基于接口还是类被代理,若proxy-target-class属性的值为true,则表示是基于类被代理。

所以,要想解决这个问题,我们需要在crm-service子模块的applicationContext-service.xml配置文件中配置aop时,注明可以基于类被代理,即在<aop:cnfig>标签上添加proxy-target-class="true"

在这里插入图片描述

转载地址:https://liayun.blog.csdn.net/article/details/103731483 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:maven快速入门第十四讲——nexus私服简介及安装
下一篇:maven快速入门番外篇——安装maven项目时报错:No compiler is provided in this environment...

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月05日 23时46分17秒