使用spring注入时出现is not writable or has an invalid setter method

在web-application-config.xml中定义

<bean id="employeeServiceDest" class="com.service.EmployeeServiceImpl">
      <flex:remoting-destination />
    <property name="EsysDao" ref="EsysDao"/>
 </bean>

结果,运行时出错:

org.springframework.beans.factory.BeanCreationException: Error
creating bean with name ‘employeeServiceDest‘ defined in ServletContext
resource [/WEB-INF/web-application-config.xml]: Error setting property
values; nested exception is
org.springframework.beans.NotWritablePropertyException: Invalid property
‘esyerDao‘ of bean class [com.service.EmployeeServiceImpl]:

Bean property ‘esyerDao‘ is not writable or has an invalid setter
method. Does the parameter type of the setter match the return type of
the getter?

其中,“Bean property ‘esyerDao‘ is not writable or has an invalid setter method”就是关键错误。

原来,需要在EmployeeServiceImpl中定义set和get方法。

public void setEsysDao (EsysDao esysdao) {
     this.esyerDao= esysdao;
    }

public EsysDao getEsysDao () {
        return esysDao;
    }

------------------------

补充,大小写是有严格区分的, <property name="EsyerDao" ref="EsyerDao"/>
和  <property name="esyerDao"
ref="EsyerDao"/>是不一样的,对于name="esyerDao",在EmployeeServiceImpl中定义set和
get方法就要用小写的setesysDao和getesysDao:
  public void setesysDao(EsysDao esysdao) {
     this.esysDao= esysdao;
    }

public EsysDao getesysDao() {
        return esysDao;
    }

-----------------------------------------------------------------

再补充,每个 <property name="xxxx"  ref="xxxxx"/> ,都必须在class中定义set和get方法。

一个都不能少,确实是个细致的工作。

最近由于项目组需要,转而开始学习JSF+Spring+Hibernate。

在调试一个网上例子的过程中,启动TOMCAT过程中出现了如标题的异常信息。

最后通过同事们一起分析找到了原因,在ApplicationContext.xml中配置有问题,里面的bean的属性名称写错了。

但是一开始一直在java文件里找。

附上java文件中部分内容如下:

public class LoginService implements ILoginService

{

private LoginDAO logindao; //此处属性名为logindao

}

但是在ApplicationContext.xml确配置如下:

<bean id="LoginService" class="vo.LoginService">

<property name="loginDao">  //此处与上面的名字不同

<ref local="LoginDAO">

</property>

</bean>

修改xml文件后,问题解决.

时间: 2024-10-14 00:09:12

使用spring注入时出现is not writable or has an invalid setter method的相关文章

使用spring注入时出现 XXX is not writable or has an invalid setter method

在applicationContext-redis.xml中定义 <bean id="jedisClientPool" class="cn.e3mall.common.jedis.JedisClientPool"> <property name="jedisPool" ref="jedisPool"></property> </bean> <bean id="je

is not writable or has an invalid setter method错误的解决

java中在配置spring时,遇到is not writable or has an invalid setter method的错误一般是命名方式的问题 需要写成private userInfoDao userinfoDao;(这里前面是小写,后面是大写) 在get和set方法中,需要写成这样get 或set之后只能有两个字母大写 private userInfoDao userinfoDao; public userInfoDao getUserinfoDao(){ return user

错误信息:Bean property &#39;sessionFactory&#39; is not writable or has an invalid setter method.(Springmvc)

是在建立class的时候对应的set方法和spring配置文件的不一样 public class GoodsService implements IGoodsService{private IGoodDAO goodsDao; public void setGoodsDao(IGoodDAO goodsDao) { this.goodsDao = goodsDao;} } public class GoodDAO implements IGoodDAO{private SessionFactor

Bean property &#39;esyerDao&#39; is not writable or has an invalid setter method. Does the parameter type of

今天调试程序的时候偶然出现了 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeServiceDest' defined in ServletContext resource [/WEB-INF/web-application-config.xml]: Error setting property values; nested exception is o

Bean property &#39;xxx&#39; is not writable or has an invalid setter method

出现此问题的原因是在ApplicationContext.xml中配置有问题,里面的bean的属性名称用 与 注入的类名称不一致 applicationContext.xml <bean id="testdao" class="com.tre.daoImpl.UserDaoImpl"> </bean> <bean id="testservice" class="com.tre.serviceImpl.Use

spring注入静态成员变量提示invalid setter method

果然还是不够细心啊,被坑一晚上.. 一个极其简单的小程序,但是需要通过xml文件配置注入一个值,唯一的特别是要注入的属性是类中的静态成员变量.. 如下,然后自动生成get和set方法..坑就从此开始了... public class Food{ private static String desc; public static String getDesc(){ return desc; } public static void setDesc(String desc){ Food.desc =

JSP中使用Spring注入的Bean时需要注意的地方

遇到问题 遇到一个问题:在JSP中,使用Spring注入的Bean对象时,未能正确地获取到想要的对象. 郁闷的是,它也没报错. 研究问题 使用DEBUG功能(好久不在JSP里写Java代码了,都忘了JSP也可以打断点调试),跟踪了一下代码,发现确实有了我想使用的类的实例,不过是个代理类. 想到反射.代理相关的知识,貌似知道问题在哪了. 赶紧试了一下,果然…… 解决 在JSP里你要获得的Bean对象的类型,要定义成接口类,而不是实现类. 当然,这也视情况而定,我不确定,在JSP里使用Spring注

struts2与spring集成时,关于class属性及成员bean自动注入的问题

正常来说按照Spring官方配置,在struts2与spring整合时,struts配置文件中class属性指向spring配置的bean id,但是在class指向类路径时,依然能注入service. public class LoginAction extends ActionSupport{ private LoginService loginService; public void setLoginService(LoginService loginService) { System.o

spring autowired时发生异常情况

spring beanFactory那些就不说了,这次发生这个异常纠结好了好久,网上找了很多资料看,终于发现问题. 自动装配bean注入的时候,如果Spring配置定义了aop声明式事务,类似如下方式 <aop:config>  <aop:pointcut id="serviceMethods2"   expression="execution(public * net.villion.framework..*(..))" />  <a