2012-03-27 19:47 Spring注解方式,异常 'sessionFactory' or 'hibernateTemplate' is required的解决方法 Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:118)
at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 26 more
以前写配置文件时,sessionFactory需要单独配置,现在全注解方式,如何设置sessionFactory呢?
项目中所有Dao实现类都继承了HibernateDaoSupport
根据提示是没有'sessionFactory' 或者'hibernateTemplate',但是通过下面代码给他注解了还是报同样的错误:
@Resource
private org.hibernate.SessionFactory sessionFactory;
结果查看HibernateDaoSupport的源代码得知:setSessionFactory方法是:
public final void setSessionFactory(SessionFactory sessionFactory) {
if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
this.hibernateTemplate = createHibernateTemplate(sessionFactory);
}
}
说明在子类中想通注解设置 sessionFactory (重写setter方法是不行的),那么怎么办,我们只能通过super.setSessionFactory ()调用
@Resource(name="sessionFactory")
private void setMySessionFactory(SessionFactory sessionFactory){
//这个方法名可以随便写,@Resource可以通过name 或者type来装载的。
super.setSessionFactory(sessionFactory);
}
分享到:
相关推荐
Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...
在Spring中,我们可以使用HibernateTemplate或SessionFactoryBean来配置和管理Hibernate。同样,Spring的声明式事务管理也可以应用到Hibernate上,只需将@Transactional注解添加到使用Hibernate的方法上,Spring就会...
@Required注解用于setter方法,表明该setter方法的依赖关系必须在配置时填充,否则将抛出一个BeanInitializationException异常。 29、@Autowired注解有什么用? @Autowired注解用于自动注入依赖,它会自动查找匹配...
- 集成Hibernate,利用SessionFactory和HibernateTemplate。 - 集成Struts1和Struts2,实现MVC架构。 - 集成JPA,使用EntityManager和HibernateJpaVendorAdapter。 - 配置二级缓存(如Hibernate的EHCache)以...
Spring AOP(面向切面编程)提供了一种声明式的方式来管理事务,让开发者无需在代码中显式处理事务。以下是如何实现: 1. **配置事务管理器**: 在Spring配置文件中定义`PlatformTransactionManager`,如`...
- 使用`@Transactional`注解进行方法级别的事务配置,如`PROPAGATION_REQUIRED`表示支持当前事务,无事务则新建。 通过上述讲解,我们可以了解到Spring的核心特性和使用方式,包括其优点、依赖注入的实现、控制...
2. 声明式事务管理:这是Spring推荐的方式,通过在XML配置或注解中声明事务属性,Spring会自动处理事务的开始、提交、回滚等操作。例如,使用TransactionProxyFactoryBean可以创建一个具有事务管理能力的代理类,...
- 在Spring中,我们可以定义DAO(数据访问对象)和Service层的bean,通过@Autowired注解注入SessionFactory和事务管理器。 ```xml <property name="sessionFactory" ref="sessionFactory"/> ``` 5. **...
12.2.2. 在Spring的application context中创建 SessionFactory 12.2.3. HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. ...
声明式事务管理通过TransactionProxyFactoryBean或@Transactional注解实现,更简洁且易于维护,支持PROPAGATION_REQUIRED等事务传播行为,可以在出现异常时自动回滚事务。 综上所述,Spring 框架以其强大的功能和...
12.2.2. 在Spring容器中创建 SessionFactory 12.2.3. The HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的...
- **配置对象工厂**:在Spring中,可以通过XML或注解的方式定义对象及其依赖关系。例如,使用`<bean>`标签来配置对象: ```xml ``` - **初始化对象工厂**:使用`ClassPathXmlApplicationContext`类加载配置文件...
12.2.2. 在Spring容器中创建 SessionFactory 12.2.3. The HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的...
- Spring为Hibernate等ORM框架提供了集成支持,如定义DataSource,创建SessionFactory,并通过HibernateDaoSupport和HibernateTemplate进行数据库操作。 - 解决OpenSessionInView问题,可以使用...
4. **事务传播属性**:理解Spring的@Transactional注解的不同传播属性,如REQUIRED、REQUIRES_NEW等,对于正确处理事务边界至关重要。 5. **JPA集成**:Spring还支持JPA(Java Persistence API),可以通过`...
在Spring中集成Hibernate,通常需要在上下文配置文件中定义DataSource和SessionFactory,然后在DAO层,可以通过继承HibernateDaoSupport类,利用HibernateTemplate进行数据库操作。为解决OpenSessionInView的问题,...