spring 使用 Dao 的 生成的代理 类别能转变成某种类型

今天 在 做 spring 与 hibernate 集成时老是抱这个不能转换为指定类型的问题

Caused by: java.lang.IllegalStateException: Cannot convert value of type [$Proxy59 implementing com.com.mvc.dao.IBase,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.com.mvc.dao.IAccount] for property 'accountDao': no matching editors or conversion strategy found

折腾了一上午都没弄出来,后来仔细的分析了下 报的错 说是  $Proxy59  不能转变 成 IAccount 类型   $Proxy59  就是自己在 spring 的配置文件中配置 的  accountDao

	<bean id="accountService" class="com.com.mvc.service.impl.AccountService">	 							
	<property name="accountDao">	
	 <ref bean="accountDao"/>		
	</property>			
	</bean>		
<bean id="accountDao" class="com.com.mvc.dao.impl.AccountDao">
		<constructor-arg>
			<value>com.com.mvc.entity.Account</value>
		</constructor-arg>	
		<constructor-arg>
			<ref bean="hibernateTemplate" />
		</constructor-arg>	
	</bean>

spring 帮我们实例化 一个 对象 ,这个对 象是 用 jdk 的 动态代理机制 生成的代理对象 

com.com.mvc.dao.impl.AccountDao -->$Proxy59

既然是类型 不能转换 那就是 子类与父类 或者 接口与实现有关

突然想到 AccountDao 是否 实现了IAccount 接口。

打开 AccountDao 一看 果然没有实现IAccount  接口

问题就出在这

AccountDao  如果 没有实现 IAccount 接口  ,怎么能把 AccountDao 实例 化的对象 赋值 到      IAccount 声明的变量 accountDao 上呢,当然 由Spring 根据 

AccountDao 动态 生成 的对象 $Proxy59 也无法 赋值到 accountDao  ( IAccount  accountDao  ).

                                                                                                                                 

解决方法 :在  AccountDao 后面加 上 implements   IAccount


碰到问题 不要慌乱,要认真 分析 仔细查找 ,答案很快就会出来。细心、耐心、信心。

                                                                   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值