急,高手请进,有关Spring的问题!

我的项目是S2SH整合的,有两配置文件hibernate.reveng.xml和applicationContext.xml(Spring管理的配置,数据库在这个文件里部署的),但是我需要写一个工具类,需要获取到SessionFactory和Session;问题来了,在工具类中不能简单的获取到spring实例化的SessionFactory,不在其管理的范围内,于是我通过获取的方式
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean("sessionFactory");
这样出来还是空指针;于是我又
Configuration config=new Configuration().configure();
SessionFactory factory=config.buildSessionFactory();
这样因为不是hibernate.cfg.xml配置的方式,所以还是不成功获取到。

请问各位高手是不是我的做法或写法有错,还有其他方式可以获取到session吗?

!!!!!!!!!!!!!!!

[quote]这样配置后,如何在工具类里获取呢 [/quote]

你这个 hibernateTemplate 注入到你 的 baseDao 里面 就可以获取 session 或者其他! hibernateTemplate 已经帮你封装好了! 直接可以调用它的方法!!
你 点 一下!

sessionFactory 让spring管理起来了嘛?

贴下相关配置!

[code="java"]WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean("$sessionFactory"); [/code]
在spring指南中有过提示的吧?

ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");

SessionFactory sessionFactory=(SssionFactory)app.getBean("sessionFactory");

spring不推荐直接获取sessionFactory,因为其sessionfactory是个动态代理类。
你最好直接在一个类中直接注入相关的session.
如果非要获取sessionfacotry,可以使用$sessionfactory获得目标类。
应该是这样,在官方文档中应该有介绍。

当然 你需要自己写工具类的话最好不直接这么干!
推荐 :

[code="java"]



[/code]

或者 hibernateDaosupport 这类的!

我想我明白你错在哪里了。
其实sessionfactory与$sessionFacotory并无关系,只是一个是实例一个是代理类而已,无所谓。
你的错误是发生在spring容器在取相应的bean时无法判断当前所处的线程。
你不要使用这个方法,改用
WebApplicationContext类来获取spring bean时就明白了,其中有个很重要的参数ServletContext,你可能没有注入进去。

你是不是没有启动Web容器就直接在测试程序中使用
[code="java"]WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean("sessionFactory"); [/code]
这种方式与Servletcontext绑定,必须在Web容器或者特殊的测试环境才能使用。
如果你没启动Web容器还是使用ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml"); 等方式打开Spring容器吧