Spring 管理bean的配置时,做如下配置,结果产生异常。
<bean id="logInfoDao" class="com.dao.impl.LogInfoDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="logInfoService" class="com.service.impl.LogInfoServiceImpl">
<property name="logInfoDAO" ref="logInfoDao"></property>
</bean>
<bean id="logInfo" class="com.action.LogAction">
<property name="logInfoService" ref="logInfoService"></property>
</bean>
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logInfo' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.service.impl.LogInfoServiceImpl] to required type [com.service.LogInfoService] for property 'logInfoService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [com.service.impl.LogInfoServiceImpl] to required type [com.service.LogInfoService] for property 'logInfoService': no matching editors or conversion strategy found
Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessException details (1) are:
PropertyAccessException 1:
org.springframework.beans.TypeMismatchException: Failed to convert property value of type [com.service.impl.LogInfoServiceImpl] to required type [com.service.LogInfoService] for property 'logInfoService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [com.service.impl.LogInfoServiceImpl] to required type [com.service.LogInfoService] for property 'logInfoService': no matching editors or conversion strategy found
Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [com.service.impl.LogInfoServiceImpl] to required type [com.service.LogInfoService] for property 'logInfoService': no matching editors or conversion strategy found
解决办法:
根据提示是因为我的action里面注入的是接口类型的变量,但是spring在吧接口实现类转化成接口的时候失败。所以把action里的属性private LogInfoService logInfoService 改成 private LogInfoServiceImpl logInfoServiceImpl;重启Tomcat ,问题解决。
困惑: 问题虽然解决了,但是问题产生的原因仍然没有找到。只怕会给后面的程序产生影响,战战兢兢中!!!