org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'stmStuInfoServiceTarget'...
Caused by: java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
at org.springframework.orm.ibatis.SqlMapClientTemplate.afterPropertiesSet(SqlMapClientTemplate.java:147)
...
<bean id="sqlMapClientBase" abstract="true" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="/WEB-INF/config/sqlMapConfig.xml" />
<property name="dataSource" ref="com.shunde.spring.dataSource" /> <!-- ❌ ref 引用錯誤 -->
</bean>
<bean id="sqlMapClient" parent="sqlMapClientBase"></bean>
...
<bean id="stmStuInfoDaoImpl" class="com.ssi.sm.dao.impl.StmStuInfoDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient" /> <!-- 需要注入 sqlMapClient -->
</bean>
ref="com.shunde.spring.dataSource",但上下文中定義的數據源 Bean id 為 dataSource(<bean id="dataSource" ...>)。導致 sqlMapClientBase 初始化失敗,無法創建 SqlMapClient 實例。sqlMapClient、sqlMapClientCount、sqlMapClientPage 都 parent="sqlMapClientBase",故它們也無法正常創建。stmStuInfoDaoImpl 需要 ref="sqlMapClient",但該 Bean 不存在/初始化失敗,Spring 拋出 Property 'sqlMapClient' is required。stmStuInfoServiceTarget 依賴 DAO,DAO 失敗導致服務 Bean 創建拋出異常,最終上下文啟動中止。<property name="dataSource" ref="dataSource" /> (與 <bean id="dataSource"> 的 id 一致)。/WEB-INF/config/sqlMapConfig.xml 在 WAR 包中確實存在。sqlMapConfig.xml 中 <sqlMap resource="..."/> 路徑正確,映射文件存在。Property 'sqlMapClient' is required 錯誤,改為正常初始化 SQL Map Client。PropertyPlaceholderConfigurer 統一管理數據源屬性(驅動、URL、用戶、密碼),避免硬編碼。SqlSessionTemplate (MyBatis) 或 SqlMapClientTemplate (iBATIS) 統一異常轉換,減少樣板代碼。這是一個典型的 **Spring Bean 依賴鏈斷裂** 案例:父 Bean 配置錯誤 → 子 Bean 初始化失敗 → 依賴該 Bean 的 DAO/Service 創建失敗 → 上下文啟動中止。通過錯誤堆棧定位到最上游的 sqlMapClientBase,修正其 dataSource 引用即可斷鏈修復。