首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Spring MVC 整合 Hibernate 報錯:No bean named 'sessionFactory' is defined 解決全紀錄

     編輯:程式設計綜合問答

錯誤堆疊

org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No bean named 'sessionFactory' is defined

常見原因排查清單

1. Bean 名稱拼寫不一致

在 `applicationContext.xml` 中定義的 id 必須與注入處完全一致:

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    ...
</bean>


@Autowired
@Qualifier("sessionFactory") // 若名稱一致可省略
private SessionFactory sessionFactory;

2. 配置檔未被載入

  • 檢查 `web.xml` 中 `contextConfigLocation` 是否包含該 XML。
  • Maven 專案確認資源檔放置於 `src/main/resources` 且打包時未被過濾。

3. Hibernate 版本與 Spring 版本不匹配

  • Spring 4.x 對應 Hibernate 4/5,Spring 5.x 需 Hibernate 5.2+。
  • 若用 `LocalSessionFactoryBean` 類別路徑錯誤(如仍用 `hibernate3` 套件類別),會導致 Bean 建立失敗。

4. 缺少必要依賴

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>5.3.x</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.6.x</version>
</dependency>

5. 事務管理器未正確引用 sessionFactory

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

快速定位步驟

  1. 啟動專案,觀察控制台是否有「Creating bean with name 'sessionFactory'」日誌。
  2. 若無,表示 Bean 定義未被掃描到 → 檢查 `` 或 XML import。
  3. 若有但隨後報錯 → 查看具體例外(如 `MappingException`, `PropertyAccessException`)。

參考資源

CSDN 詳細解析:No bean named 'sessionFactory' is defined 解決方案

總結

90% 的情況是 Bean 名稱不對、配置檔未載入、或版本衝突。建議從「啟動日誌」入手,逐步驗證每個 Bean 是否成功初始化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved