org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'userHandler': Injection of resource dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'userServiceImpl': Injection of resource dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'userMapper' defined in file [...UserMapper.class]:
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException:
org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.NullPointerException
userHandler 注入 userServiceImpl 失敗userServiceImpl 注入 userMapper 失敗userMapper 初始化失敗:MyBatis 解析 Mapper XML 時拋出 NPE**MyBatis 要求每個 <mapper> 元素必須指定 namespace,且值為對應 Mapper 接口的全限定名。缺失或錯誤會導致 XMLMapperBuilder.configurationElement 空指針。
<mapper> <!-- 缺少 namespace! -->
<select id="userLogin" ...> ... </select>
</mapper>
<mapper namespace="com.hyh.mapper.UserMapper">
<select id="userLogin" parameterType="com.hyh.entity.User" resultType="com.hyh.entity.User">
select * from userInfo where phone=#{phone} and accoundpwd=#{accountpwd}
</select>
</mapper>
確保 spring-mvc.xml 或 applicationContext.xml 中開啟了組件掃描,且 base-package 覆蓋了 Service、Mapper 所在包:
<context:component-scan base-package="com.hyh.action,com.hyh.service.impl" />
namespace?是否與 Mapper 接口全限定名一致?mapperLocations 路徑是否正確?select、resultType)拼寫是否正確?建議複製粘貼避免手寫錯誤。「Injection of resource dependencies failed」通常是鏈路式連鎖反應,需順著 Caused by 找到最底層根因。本案例中,Mapper XML 缺少 namespace 導致 MyBatis 解析 NPE 是核心原因。細節決定成敗,關鍵配置寧可複製勿手寫。