getHibernateTemplate 为空

好吃的松子 2008-12-18 10:47:21
自己试着弄了SSH的整合,可整合struts时就出问题了,页面报出的信息显示dao中getHibernateTemplate为null。
之前只整合了spring和hibernate时,通过TestCase测试是通过的,加上struts后就不通过了。

struts中是通过以下方式使用service的:
1、在web.xml中配置listener,在这个listner中实现与spring中ContextLoaderListener类似的功能,但自己加了一个静态类,并把ContextLoader组织好的context保存到这个静态类中。
2、在struts的Action中,使用 ContextUtils.getBean("service")返回service实例。

在spring配置文件中有配置注入dao,dao配置中有注入sessionFactory。


在TestCase中,是通过applicationContext = new ClassPathXmlApplicationContext(paths);组织spring上下文的。


请各位高手指点,为什么通过struts就出现问题了呢?
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wj_18 2008-12-18
  • 打赏
  • 举报
回复
贴一下你的application.xml
tzb08 2008-12-18
  • 打赏
  • 举报
回复
跟通不通过struts没关系的,spring配置文件里面dao可引用了sessionFactory? dao可继承了HibernateDaoSupport?
tzb08 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 husheng86 的回复:]
问题解决了,其实是这样的:
这里调的是userService,userService中调用了userDao,userDao继承了baseDao。
在页面userService.save时,看上去是调用了userDao.save,但实际上是调用了baseDao,而baseDao没有注入到userService中。

<bean id="userServiceTarget"
class="service.user.impl.UserServiceImpl">
<property name="userDao">
<ref bean="userDao" />
</property>
<property name="baseDao">
<ref bean="bas…
[/Quote]

哦,也记下了 呵呵
好吃的松子 2008-12-18
  • 打赏
  • 举报
回复
问题解决了,其实是这样的:
这里调的是userService,userService中调用了userDao,userDao继承了baseDao。
在页面userService.save时,看上去是调用了userDao.save,但实际上是调用了baseDao,而baseDao没有注入到userService中。

<bean id="userServiceTarget"
class="service.user.impl.UserServiceImpl">
<property name="userDao">
<ref bean="userDao" />
</property>
<property name="baseDao">
<ref bean="baseDao" />
</property>

</bean>

加上红色部分,就跑得通了。


另外,测试时是好的,呵呵,那是我失误了,根本就没有测userService的save,所以没有发现问题。唉,教训啊,以后要仔细些才行了!!
tzb08 2008-12-18
  • 打赏
  • 举报
回复
ApplicationContext ac = new ClassPathXmlApplicationContext("/WEB-INF/classes/applicationContext.xml");
Service service= (Service)ac.getBean("service");

这样写试试
其实你将service注入aciton里面多好啊,这样就可以直接调用了
好吃的松子 2008-12-18
  • 打赏
  • 举报
回复
确定已经写了注入sessionFactory的代码,dao也继承了HibernateDaoSupport

<bean id="baseDao" class="dao.impl.BaseDaoImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧