在我的 Grails 应用程序中,我试图定义一个 Spring bean,resources.groovy
它需要一个 Map 类型的构造函数 arg。我试过这个:
Map<Class, String> mapArg = [(String): 'foo']
myBean(MyBeanImpl, mapArg)
但我收到错误消息:
org.springframework.beans.factory.BeanCreationException:创建名为“myBean”的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)
实现类有一个这样定义的构造函数
MyBeanImpl(Map<Class, String> map) {
// impl omitted
}
我的猜测是,问题是由于我定义了一个构造函数,该构造函数采用单个Map
arg,其签名与 Groovy 添加到每个类的默认构造函数具有相同的签名。
如果是这样,解决方案似乎是添加工厂方法,例如
MyBean getInstance(Map map) {
// impl omitted
}
但我不确定如何调用它来定义一个 bean (in resources.groovy
),它是从需要参数的工厂方法构造的。