今天在搭框架的时候,碰到一个很奇怪的问题,Property 'sessionFactory' is required是用spring向hibernate中注入sessionFactory的时候不成功。
我一开始以为是配置文件出错了。结果并不是。
我的BaseDao如下:
public class BaseDao {
private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;
public HibernateTemplate getHibernateTemplate(){
if(hibernateTemplate == null){
hibernateTemplate = new HibernateTemplate (sessionFactory);
}
return hibernateTemplate;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
我的TestDaoImpl如果下:
public class TestDaoImpl extends BaseDao implements TestDao {
private HibernateTemplate hibernateTemplate = super.getHibernateTemplate();
public Test get(){
Test t = hibernateTemplate.get(Test.class, 1);
return t;
}
}
配置文件:
<!-- 配置Hibernate的sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 配置dataSource属性指定数据源 -->
<property name="dataSource" ref="datasource"></property>
<!-- 配置Hibernate的PO映射文件 -->
<property name="mappingResources">
<list>
<value>/com/feidu/ehr/entity/Test.hbm.xml</value>
</list>
</property>
<!-- 配置Hibernate的常规属性设置 -->
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true
hibernate.format_sql=true
</value>
</property>
</bean>
<!-- dao -->
<bean id="baseDao" class="com.feidu.ehr.dao.BaseDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="testDaoImpl" class="com.feidu.ehr.dao.daoimpl.TestDaoImpl" parent="baseDao">
</bean>
<!-- biz -->
<bean id="testBiz" class="com.feidu.ehr.biz.bizimpl.TestBizImpl">
<property name="testDao" ref="testDaoImpl">
</property>
</bean>
配置文件没有错误;问题就出在TestDaoImpl:
private HibernateTemplate hibernateTemplate = super.getHibernateTemplate();
不能把hibernateTemplate作为属性。TestDaoImpl应该改为:
public class TestDaoImpl extends BaseDao implements TestDao {
public Test get(){
Test t = super.getHibernateTemplate().get(Test.class, 1);
return t;
}
}
这样问题就解决了!
分享到:
相关推荐
SSH整合是指将Struts2、Spring和Hibernate三个开源框架集成在一起,用于构建高效、灵活的企业级Web应用程序。在这个过程中,Spring作为核心容器负责管理和协调其他组件,Struts2作为MVC框架处理用户交互,而...
SSH框架整合是将Spring、Struts和Hibernate三个流行的开源Java Web开发框架集成在一起,以构建高效、可维护的Web应用程序。下面将详细讲解SSH框架整合的各个部分。 一、Spring整合Hibernate 1. **无需Hibernate...
在SSH整合中,Spring主要负责管理各个组件的生命周期,包括Struts2的Action和Hibernate的SessionFactory。 以下是SSH整合的基本步骤: 1. **配置Spring**:创建`applicationContext.xml`,配置数据源、...
<property name="sessionFactory"> <ref local="sessionFactory"/> </property> ``` 2. **服务层Bean的配置** 通常情况下,业务逻辑会封装在一个或多个服务层Bean中。例如,以下代码片段定义了一个名为`...
<property name="sessionFactory"> <ref bean="sessionFactory"/> </property> ``` ##### 4. 事务代理配置 为了使业务逻辑能够自动地参与事务管理,还需要配置一个事务代理。这里使用了`...
整合 SSH 框架可以让开发者更专注于业务逻辑,而无需关心底层的细节。Struts2 提供了 MVC 架构,Spring 提供了依赖注入和事务管理,Hibernate 则简化了数据库操作。通过恰当的配置,这三个强大的框架可以协同工作,...
<property name="sessionFactory" ref="sessionFactory" /> <!-- 事务的通知类型 --> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" read-only="true" /> &...
### 搭建SSH2框架的关键步骤与实践 #### 一、引言 SSH2框架,即Spring2.5、Struts2与Hibernate3.3的集成开发框架,在Java Web应用开发领域占据着重要的地位。它能够有效地提高开发效率,简化复杂的业务逻辑处理。...
<property name="sessionFactory" ref="sessionFactory"></property> ``` 4. **事务策略配置**: 使用Spring的事务注解(TX),定义不同的方法调用时的事务传播行为。例如: ```xml *" propagation=...
Spring2.5 + Struts1.3.8 + Hibernate3.0 (简称SSH)整合是一种典型的Java Web开发模式,旨在通过组合这三种技术框架来构建高性能、易于维护的企业级应用系统。本文将详细介绍SSH整合的关键步骤及其配置细节,帮助...
<property name="sessionFactory"> <ref bean="sessionFactory"/> </property> <!-- 配置事务的传播特性 --> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation=...
<property name="sessionFactory"> <ref bean="sessionFactory"/> </property> ``` 7. **编写必要的通用类:** - 可以编写一些通用工具类,例如日期处理、字符串处理等,以便在项目中复用。 8. **测试SSH...
<property name="sessionFactory" ref="sessionFactory"/> ``` 这里的`transactionManager`就是Spring中负责管理事务的bean。它依赖于`sessionFactory`,后者是Hibernate提供的用于创建Session对象的工厂类。 ##...
<property name="sessionFactory" ref="sessionFactory"/> ``` - 配置事务属性: ```xml <property name="transactionAttributes"> *">PROPAGATION_REQUIRED *">PROPAGATION_REQUIRED *">PROPAGATION_...
<property name="sessionFactory" ref="sessionFactory"/> <!-- Transaction Interceptor --> <property name="transactionManager" ref="transactionManager"/> <property name="transactionAttributes"> ...
<property name="sessionFactory" ref="sessionFactory"/> ``` 其中`sessionFactory`引用了之前配置的SessionFactory Bean。 **2.4 配置事务通知** 为了使Spring能够自动管理事务,我们需要在Spring的配置文件...
<property name="sessionFactory" ref="sessionFactory"/> ``` ###### 2.2.5 编写JUnit测试代码 创建JUnit测试类,验证业务逻辑是否按预期工作。 ```java public class UserServiceTest { @Autowired ...
<property name="sessionFactory" ref="sessionFactory"/> ``` 接着,可以使用`<tx:advice>`和`<aop:config>`标签来定义事务策略和切点。例如,为Service层的所有方法开启事务: ```xml *" propagation...
维生药业小项目 SSH简单学习项目 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns...
<property name="sessionFactory" ref="sessionFactory" /> <!-- 定义事务通知 --> *" propagation="REQUIRED" /> *" propagation="REQUIRED" /> *" propagation="REQUIRED" /> *" propagation=...