|
查看文章
|
|
初学Spring,在Spring中整合Hibernate时,遇到如下异常: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'BookDAO' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required 我在程序中定义了一个BookDAO类,继承了HibernateDaoSupport,以利用HibernateTemplate来进行对数据库数据的增删修查的操作。
public
class
BookDAO
extends
HibernateDaoSupport
...
{ ![]() public void addBook(Book book)...{ getHibernateTemplate().save(book); getHibernateTemplate().flush(); } ![]() public void delBook(Book book)...{ getHibernateTemplate().delete(book); getHibernateTemplate().flush(); } ![]() public void update(Book book)...{ getHibernateTemplate().update(book); getHibernateTemplate().flush(); } ![]() public Book getBook(long oid)...{ return (Book)getHibernateTemplate().get(Book.class, oid); } }
另外,我定义了一个类BookSrv,其依赖于BookDAO,并利用Setter Injection的依赖注入方式,注入BookDAO的对象。
public
class
BookSrv
...
{ private BookDAO bdao=null;![]() ![]() public void setBdao(BookDAO bdao) ...{ this.bdao = bdao; } ![]() public void add(Book book)...{ bdao.addBook(book); } ![]() public void del(Book book)...{ bdao.delBook(book); } ![]() public void update(Book book)...{ bdao.update(book); }![]() public Book get(long oid)...{ return bdao.getBook(oid); } }
我原先的错误的配置文件如下(省略其他部分):
<
bean
id
="BookDAO"
class
="dao.BookDAO"
>
</
bean
>
<
bean
id
="BookSrv"
class
="srv.BookSrv"
>
<
property
name
="bdao"
ref
="BookDAO"
></
property
>
</
bean
>
想了很久,也找不出异常地原因。而且被那一句sessionFactory or hibernateTemplate is required所害,一直在dataSource、sessionFactory、hibernateTemplate的配置上苦苦地追寻着错误所在。 其实早该发现问题地所在:BeanCreationException: Error creating bean with name 'BookDAO' …… 因为BookDAO继承了HibernateDaoSupport,并利用HibernateDaoSupport的 getHibernateTemplate()得到一个HibernateTemplate的对象,然后再调用这个对象的save()、flush()等 方法。所以,BookDAO依赖于HibernateTemplate。 于是,在配置文件中加上BookDAO对HibernateTemplate的依赖即可解决问题。 正确的配置文件为:
<
bean
id
="BookDAO"
class
="dao.BookDAO"
>
<
property
name
="hibernateTemplate"
ref
="hibernateTemplate"
></
property
>
</
bean
>
<
bean
id
="BookSrv"
class
="srv.BookSrv"
>
<
property
name
="bdao"
ref
="BookDAO"
></
property
>
</
bean
>
|
'; _rh2+=''; } } _rh1+=''; _rh2+='
![]() | '; }else{ _rh1+=' | '; } _rh1+="登录后,您就出现在这里。 | 最近还没有登录用户看过这篇文章…… | '+g_read[i][2]+' | ||||
![]() | 登录后,您就出现在这里。 | |
"+cmtname+""; }else{ if(cmtname=="" || cmtname=="匿名网友"){ if(cmturl==""){ html1=" 匿名网友"; }else{ html1=" "+cmtname+""; } }else{ if(cmturl==""){ html1="
| 姓 名: | <script type="text/javascript"> document.write(" 注册"); document.write(" | 登录"); </script> 注册 | 登录
*姓名最长为50字节
|
| 网址或邮箱: | (选填) |
| 内 容: | <script type="text/javascript"> G("spBlogCmtor").value=G("spBlogCmtor").defaultValue; G("spBlogCmtText").value=""; </script> |
| 验证码: | 请输入下图中的四位验证码,字母不区分大小写。 <script language="JavaScript" type="text/javascript"> var imgsrc="https://i-blog.csdnimg.cn/blog_migrate/fbe3c87c3ec7d446b6313e763fde1463.png"; document.write(" |

}
}

136

被折叠的 条评论
为什么被折叠?



