org.springframework.beans.factory.BeanCreationException: Error...... java.lang.IllegalArgumentExcept

发生的异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘customerDaoImpl’ defined in file [E:\Java\apache\apache-tomcat-7.0.52\webapps\ssh_demo1\WEB-INF\classes\com\itheima\dao\CustomerDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: ‘sessionFactory’ or ‘hibernateTemplate’ is required

原因:
HibernateDaoSupport与HibernateTemplate和setSessionFactory在MVC的Dao的获取(使用)

示例:

@Repository
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {

@Autowired
private HibernateTemplate  hibernateTemplate;

// public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
// this.hibernateTemplate = hibernateTemplate;
// }

@Resource
public void setSessionFactory0(SessionFactory session){
    super.setSessionFactory(session);
}




public void save(Customer customer) {
    hibernateTemplate.save(customer);
}

}

方法1 :在这里如果要使用继承HibernateDaoSupport 的话就要添加一个sessionFactory
@Resource
public void setSessionFactory0(SessionFactory session){
super.setSessionFactory(session);
}
方法2: 如果不继承那么直接获取 前提 applicationContext.xml文件已经配置了hibernateTemplate并已经植入了sessionFactory
@Autowired
private HibernateTemplate hibernateTemplate;
即可或者添加一个set方法也可以

底层代码解释:
public abstract class HibernateDaoSupport extends DaoSupport {
private HibernateTemplate hibernateTemplate;

public final void setSessionFactory(SessionFactory sessionFactory) {
    if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
        this.hibernateTemplate = this.createHibernateTemplate(sessionFactory);
    }

}

因为HibernateDaoSupport需要一个sessionFactory或者hibernateTemplate 所以 要不然自动获取hibernateTemplate 要不然 给人家一个sessionFactory

纯属个人笔记欢迎大牛指点~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值