dongguoh
2011-05-24 12:33
浏览 272
已采纳

Spring 注解引用 xml 中的 sessionFactory,怎样实现?

我想直接用注解的方式在引用一个已经在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 这里用注解的方式引用吗?怎样实现,谢谢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_667 2011-05-24 15:14
    已采纳

    从错误信息看应该是hibernateTemplate这个Bean没有注入吧,因为你继承了HibernateDaoSupport类,这里面有个方法在Spring容器初始化的时候会去校验一把的:
    [code="java"]
    protected final void checkDaoConfig() {
    if (this.hibernateTemplate == null) {
    throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
    }
    }
    [/code]

    点赞 评论
  • iteye_667 2011-05-24 13:02

    [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的环境。 :)

    点赞 评论
  • iteye_667 2011-05-24 13:38

    :o 启动时报啥错误啊

    点赞 评论
  • slightwei 2011-05-24 15:17

    [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]

    点赞 评论

相关推荐 更多相似问题