各位,小弟在学习spring+hibernate 声明式事务时,发现一个问题, 做了两种测试
建立一个普通的 java project
x.y.services 包下有 applicationContext.xml, DefaultFooService.java, 在applicationContext.xml中对DefaultFooService进行声明式事务,并注入 DefaultFooService
运行后成功实现事务管理建立一个 web dynamic project
在applicationContext.xml中对DefaultFooService进行声明式事务,但不注入 DefaultFooService,而是在 DefaultFooService.java中,
[code="java"] public void init() {
System.out.println("init...");
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
sessionFactory = (SessionFactory)ctx.getBean("sessionFactory");
if(sessionFactory == null) {
System.out.println("sessionFactory is null");
}
fooDaoHibernate = new FooDaoHibernate();
if(fooDaoHibernate == null) {
System.out.println("fooDaoHibernate in init() is null");
}
fooDaoHibernate.setSessionFactory(sessionFactory);
relationshipDaoHibernate = new RelationshipDaoHibernate();
relationshipDaoHibernate.setSessionFactory(sessionFactory);
}[/code]
同时在 spring-servlet.xml中
[code="xml"][/code]
这样的话,事务没有成功
所以,请问 问题出在哪?
我个人猜测是不是因为我没有使用 IoC容器管理 DefaultFooService,所以声明式事务无法实现,如果是这样,应该怎样进行事务管理?
谢谢!