欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Error creating bean with name 'userDao'

程序员文章站 2022-04-12 20:59:04
...
[color=red]严重: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lj.service.IUserService com.lj.controller.UserController.userService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.lj.dao.UserDao.setSessionFactory(org.hibernate.SessionFactory); nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider;[/color]

在启动的时候,会报出一堆这样的错误。 所有我们使用Annotation的注入都会被报错。

出现这个错误的原因是Spring对sessionFactory的管理。

 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">


这里我们使用了hibernate3.LocalSessionFactoryBean,
但是这个类是不支持对Annotation进行管理的。
也就是说我们没有使用mapping文件比如User.xml文件来进行映射的管理。

这里的解决方法有两种,

1: orm.hibernate3.LocalSessionFactoryBean改成orm.hibernate3.annotation.AnnotationSessionFactoryBean,
后者支持hibernate通过Annotation管理映射。

2: 改成orm.hibernate4.LocalSessionFactoryBean.
这里貌似要使用hibernate4才可以。

总之如果容器启动就看到一堆初始化错误,注入异常的信息,很可能就是这个原因了。