resource required not found之Bean property 'sessionFactory' is not writable or has an invalid setter


这个错误要搞死我,对于java dynamic web的恨意大概都来源于此。

首先,看到这个错误先明确一定是applicationContext.xml配置出现了错误,而且应该是datasource中的bean的配置出现了问题。

1.你的bean配置:

bean配置有四层,除去sessionFactory那一层还应该有三层:action/dao/service。下面是每一层的一个bean配置为例,详细说明这种情况应该注意的点:

<!--Action配置-->
<bean id="usersAction" class="actions.UsersAction" scope="prototype">
        <property name="usersService" ref="usersService"/>
</bean>

<!-- Service的配置 -->
<bean id="usersService" class="service.impl.UsersServiceImpl">
        <property name="usersDao" ref="usersDao"/>
</bean>

<!--Dao配置-->
<bean id="usersDao" class="dao.impl.UsersDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
</bean>

注意
在action/ServiceImpl类中实例化的Service/Dao变量的名字应该与配置文件中指定的名字一样,其get与set方法也一定命名好(name还是ref我没有查…因为一直都是保持一样的,抱歉)。比如说,在上述例子中,在UsersAction中实例化了UsersService,实例化的变量命名与对应方法应该是这样:

//在UsersAction中
private UsersService usersService;
public void setUsersService(UsersService usersService){
    this.usersService=usersService;
} 
public UsersService getUsersService(){
    return this.usersServce;
}

这里有一个建议,如果使用eclipse ee来编程,写完private UsersService usersService;这一句之后直接使用快捷键shift+alt+S,出现popup菜单,选择generate setters and getters直接选择你要为之生成set与get方法的变量即可,不用担心写错。毕竟这里参数命名太重要了。

去看一看:1.bean中的property中的名字配置与你在类中实例化参数命名是否一致。2.你实例化的参数有没有对应的set与get方法。3.你的set与get方法的命名与你直接使用快捷键generate的名字是不是一样的。

2.你的DaoImpl类有没有extends HibernateDaoSupport

如果没有的话就extends一下就好,或者不用这个类的话,可以在DaoImpl类中定义sessionFactory这个参数(必须同名!!!),然后使用我上面说的shift+alt+S快捷键generate setter and getter的方法为之生成set与get方法。

参考:错误信息:Bean property ‘sessionFactory’ is not writable or has an invalid setter method.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值