我想直接用注解的方式在引用一个已经在xml中定义的sessionFactory,怎样实现。
先是DGsysHibernate 这个类
public class DGsysHibernate extends HibernateDaoSupport {}
其次是
public class AbstractService extends DGsysHibernate { }
再是
public class ModuleServiceImpl extends AbstractService implements ModuleService {}
如果我在XML中这样配置
是可以直接实现的
但如果每个业务层都配置觉得麻烦,想直接在 AbstractService 这个直接就用注解的方式引用 sessionFactory,那么继承的实现类就不用配置了,其次是如果不能在AbstractService 这里注解引用sessionFactory,那么可以在
ModuleServiceImpl 这里用注解的方式引用吗?怎样实现,谢谢?
从错误信息看应该是hibernateTemplate这个Bean没有注入吧,因为你继承了HibernateDaoSupport类,这里面有个方法在Spring容器初始化的时候会去校验一把的:
[code="java"]
protected final void checkDaoConfig() {
if (this.hibernateTemplate == null) {
throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
}
}
[/code]
[code="java"]
public class DGsysHibernate extends HibernateDaoSupport {
@Resource(name = "sessionFactory")
private SessionFactory sessionFactory;
@Override
protected void initDao() throws Exception {
super.initDao();
setSessionFactory(sessionFactory);
}
}
[/code]
不知道是不是你想要的。我没试过,没有Hibernate的环境。 :)
:o 启动时报啥错误啊
[code="java"]
@Repository
public class BaseDaoSupport extends
HibernateDaoSupport implements IBaseDaoSupport {
private SessionFactory mySessionFactory;
@Resource
public void setMySessionFactory(SessionFactory sessionFactory) {
this.mySessionFactory = sessionFactory;
}
@PostConstruct
public void setSupportSessionFactory() {
super.setSessionFactory(mySessionFactory);
}
[/code]