求解:org.springframework.beans.factory.BeanCreationException

配置文件
[code="java"]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- Session公共类 -->
<bean id="sessionCookie" class="com.talkweb.ei.common.SessionCookie"
    scope="prototype">
    <property name="iQuestionInfodao" ref="questionInfoDaoImpl" />
</bean>
<bean id="questionInfoDaoImpl" class="com.talkweb.analyseInfo.biz.dao.impl.QuestionsInfoDaoImpl">
    <property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
<bean id="questionsInfoservice" class="com.talkweb.analyseInfo.service.impl.IQuestionsInfoImpl">
    <property name="iQuestionInfodao">
        <ref bean="questionInfoDaoImpl" />
    </property>
</bean>

<bean id="proxyQuestionsInfoService" parent="proxyBean">
    <property name="target">
        <ref bean="questionsInfoservice" />
    </property>
</bean>

<bean name="/QuestionInfo"
    class="com.talkweb.analyseInfo.web.struts.action.QuestionsInfoAction">
        <property name="questionInfo">
        <ref bean="proxyQuestionsInfoService"/>
    </property>
</bean>


[/code]

报错信息:
[code="java"]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'questionsInfoservice' defined in ServletContext resource [/WEB-INF/applicationContext-questionsinfo.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'iQuestionInfodao' of bean class [com.talkweb.analyseInfo.service.impl.IQuestionsInfoImpl]: Bean property 'iQuestionInfodao' is not writable or has an invalid setter method. Did you mean 'IQuestionInfodao'?
Caused by:
org.springframework.beans.NotWritablePropertyException: Invalid property 'iQuestionInfodao' of bean class [com.talkweb.analyseInfo.service.impl.IQuestionsInfoImpl]: Bean property 'iQuestionInfodao' is not writable or has an invalid setter method. Did you mean 'IQuestionInfodao'?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:747)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:604)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValue(AbstractPropertyAccessor.java:49)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:74)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
at org.springframework.beans.factory.support.AbstractBeanFactory.applyPropertyValues(AbstractBeanFactory.java:852)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1054)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:843)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:254)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:144)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:163)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:241)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1244)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1342)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:619)

[/code]

8个回答

你的属性换个名字,第二个字母不要大写,前面的单词小写。然后用工具自动生成get set

questionsInfoservice 里面的IQuestionInfodao是否没有set get方法?

你的 com.talkweb.analyseInfo.service.impl.IQuestionsInfoImpl 这个类里有没有 iQuestionInfodao 这个属性,如果有的话,还必须为它写一个 setter 方法,即
[code="java"]public void setIQuestionInfodao(xxx xxx){xxxxx}[/code]

没有iQuestionInfodao 这个属性可以,但是 setIQuestionInfodao() 这个方法必须得有

[quote]有的 [/quote]
贴出来瞧瞧。顺便把你的这个 bean 的定义贴出来瞧瞧


你的 iQuestionInfodao这个首字母大小写和配置的不一样吧

[quote]Invalid property 'iQuestionInfodao' of bean class [com.talkweb.analyseInfo.service.impl.IQuestionsInfoImpl][/quote]
这个错明显就是说 iQuestionInfodao 找不到这个字段啊。你还是把你的代码贴一下吧

你把 iQuestionInfodao换个名字 比如
iquestionInfoDao,然后生成get set 方法。
然后把spring的配置文件中也改成 iquestionInfoDao

我确定是这样的问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐