SSH跳过的坑

本文分享了在Spring+SpringMVC+Hibernate框架下从XML注入转换到注解注入过程中遇到的问题及解决方案,包括配置自动扫描、Service层依赖注入失败及获取SessionFactory的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本处SSH指:Spring + SpringMVC + Hibernate
Spring版本:4.1.6
Hibernate本班:4.5.2

1、 由于之前dao层和service层一直都是在xml中配置依赖关系,所以在SpringMVC的配置文件中只配置自动扫描包时,只配置到了controller层。当有一天突然换为注解注入依赖关系时,SpringMVC的配置文件仍然按照以前那种方式配置,报错大致如下
@org.springframework.beans.factory.annotation.Autowired(required=true)这个错误的大致意思时无法扫描注解。其实这个错误很好解决,只不过第一个遇到比较纠结,解决办法如下:
在SpringMVC配置文件加入<context:component-scan base-package="这里是要扫描的包"/>即可。

2、今天将SSH框架由 xml 注入改为 注解注入时,service 注入 controller 是成功的,但 dao 注入 service 时一直提示 dao 为 null,纠结了好久,让同事来看也没解决。最终的解决办法是重新搭一次,第一次搭的是 xml 注入方式(基本都是从上个项目粘贴复制),然后再将 xml 改为注解发现神奇的好使了。
原因:可能是eclipse缓存或者tomcat缓存问题

3、关于Spring4.X + Hibernate4.X 获取session的方式
3.1、xml注入获取方式

BaseDao.java
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
    return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
}
/**
 * @return session
 */
public Session getSession(){
    // 需要开启事物才能得到CurrentSession
    // 在commit或rollback后会自动关闭
    // 注:如果使用openSession()方式创建session需要手动关闭
    Session session = this.sessionFactory.getCurrentSession();
    return session;
}

3.2、注解获取方式(这里需要特别说明一下:xml注入方式获取 SessionFactory 的方式在 注解注入方式中获取不到)

UserInfoDaoImpl.java
@Autowired
private SessionFactory sessionFactory;

/**
 * @return session
 */
public Session getSession(){
    Session session = this.sessionFactory.getCurrentSession();
    return session;
}

这篇博客会持续更新中,每当跳坑了都会来更新的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值