nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.icap.common.system.service.SysUserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}...............................................................
突然出現此問題,讓我研究了一天一夜,終於找到問題所在(Myeclipse代碼編譯錯誤導致,Project->clean 就好了)。
上述異常是控制台中報出來的,根據其意思是注入的Bean對象不存在,導致此問題的原因主要是看直接原因還是間接原因(也就這幾種原因能導致此問題)。
直接原因:Bean對象的注解標簽沒有添加 ( 如 @Controller, @Service,@Repository等等),或者是注解的掃描是否打開,即在applicationContext.xml 上下文中是否配置了 : <context:component-scan base-package="com"> 或者 <context:annotation-config /> 這二者選其一,有了前者就不用再加后者。這里需要說明的是為了不引起Service(業務層)事務不生效的問題,建議在applicationContext.xml 中只掃描注入除控制層以外的注解,而控制層(Controller)的注入交由MVC來進行掃描注入(servlet)。
光從上述異常中是無法看出注解是否啟動掃描的。
間接原因:1. 代碼編譯問題導致。如,Myeclipse 或其他IDE工具。 這種clean 重新編譯即可
2. JDK 與 Spring 版本不兼容 根據自己的JDK找相應支持的Jar
3. 缺少注解相關的Jar 文件 在網上找標准配置清單(網上一堆)
4. 掃描器配置沖突 檢查web.xml ,applicationContext.xml 和aplicationContext-mvc.xml中注解相關配置是否正確。
在Java Web項目中 使用SpringMVC +Hibernate+全注解的過程中,雖然減輕了Struts的XML繁重配置,但同時給接觸SpringMVC注解不深的人也帶來了許多問題。所有的Bean都依賴於注解的掃描注入,此過程的實現全部封裝在了Spring的Jar包中,開發人員可無需關心注入的整個過程,但一旦注入出現問題,會讓很多對注解了解不深的人頭疼不已。看着密密麻麻的Exception,卻無從下手。
————————————————
版權聲明:本文為CSDN博主「jimbo3693」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jimbo3693/article/details/52524587