Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameter 標簽: 構造器注入Spring


 

 

問題:要么是因為構造方法改變了,要么就是構造方法入參實例化失敗(比如沒有實現)

 

問題

在練習spring構造器注入方式的小程序的時候報錯: 
Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘poeticDuke’ defined in class path resource [com/springinaction/springidol/spring-idol.xml]: Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)

原因和解決方法

報錯信息大體是說創建poeticDuke這個bean的時候出錯,出錯的原因是與構造器不匹配,給出的線索是為bean的構造器參數指定正確的索引、類或者名字,防止引起混淆。

構造器方法如下:

    public PoeticJuggler(int beanBags, Poem poem) { super(beanBags); this.poem = poem; }

 

XML配置文件如下:

    <bean id="sonnet29" class="com.springinaction.springidol.Sonnet29" /> <bean id="poeticDuke" class="com.springinaction.springidol.PoeticJuggler"> <constructor-arg value="15" /> <constructor-arg ref="sonnet29" /> </bean>

報錯信息說參數不匹配,猜測應該是指constructor-arg元素內的參數類型不匹配,這里”15”和”sonnet29”應當分別對應於int原始數據類型和Poem類,15肯定是int類型這沒問題,那么再看sonnet29,它是類Sonnet29的bean,然后我去看類Sonnet29是怎么寫的,才發現忘記去實現Poem接口了,然后加上接口,程序正常。

public class Sonnet29 implements Poem {/*Here goes body.*/}

 

 


免責聲明!

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



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