私のGrailsアプリでresources.groovy
は、Map型のコンストラクター引数を必要とするSpringBeanを定義しようとしています。私はこれを試しました:
Map<Class, String> mapArg = [(String): 'foo']
myBean(MyBeanImpl, mapArg)
しかし、エラーメッセージが表示されます。
org.springframework.beans.factory.BeanCreationException:「myBean」という名前のBeanの作成中にエラーが発生しました:一致するコンストラクターを解決できませんでした(ヒント:型のあいまいさを避けるために、単純なパラメーターのインデックス/型/名前の引数を指定してください)
実装クラスには、このように定義された単一のコンストラクターがあります
MyBeanImpl(Map<Class, String> map) {
// impl omitted
}
私の推測では、この問題は、Map
Groovyがすべてのクラスに追加するデフォルトのコンストラクターと同じシグネチャを持つ単一の引数をとるコンストラクターを定義したという事実が原因であると推測されます。
もしそうなら、解決策は次のようなファクトリメソッドを追加することであるように見えます
MyBean getInstance(Map map) {
// impl omitted
}
resources.groovy
しかし、これをどのように呼び出して、パラメーターを必要とするファクトリメソッドから構築されたBean(in)を定義できるかわかりません。