當spring 對象@Autowired 注入失敗或者創建對象Bean失敗、No qualifying bean/Error creating bean 的失敗情形分析和解決方案


   錯誤信息

今天開發的過程中突然出現如下錯誤:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.smilx.ipayment.dao.XkioskFileMapper' available: 
           expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1716)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1272)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1226)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
	... 63 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ipaymentCheckController': 
           Unsatisfied dependency expressed through field 'XkioskFileMapper'; 
           nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
           No qualifying bean of type 'com.smilx.ipayment.dao.SmilxXkioskFileMapper' available: expected at least 1 bean which qualifies as autowire candidate. 
        Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)

 以上錯誤信息大致意思是:No qualifying bean of type 'com.smilx.ipayment.dao.XkioskFileMapper' available 這個dao層的mapper 依賴注入失敗!

   分析及解決辦法:

     既然是注入失敗首先要檢查的就是掃描 Mapper 接口和容器管理配置,Dao層的路徑是否配置正確!

        然后檢查是否有重名的Bean!

        還有可能在@Service注解的類中直接使用Spring注入的對象,導致加@Service注解的類創建Bean不成功,如下

    @Autowired
    private CommonPropertiesUtil util;
    @Autowired
    private CommonService commonService;

    String SECRET_SEX = util.getSecretSex()//直接使用的注入對象util;
    String SECRET_USER = util.getSecretUser();

  把String SECRET_USER = util.getSecretUser()從類中移到方法中運行正常了!

       在這里把自己遇到的問題和解決方案做個記錄備份,希望也能解決你的問題

       還有其他情況歡迎評論討論!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM