【问题标题】:Spring wire up - default constructor not found弹簧连线 - 未找到默认构造函数
【发布时间】:2013-06-29 05:14:09
【问题描述】:

我正在尝试将构造函数注入到下面的 bean 中,但我不断收到未找到默认构造函数的错误 - 原因:java.lang.NoSuchMethodException: my.package.MyBean.<init>()

如果我添加一个默认构造函数,错误就会消失,但显然这不是我想要做的。

我想了解为什么简单的xml 映射与我拥有的构造函数不匹配。

我知道以前有人以某种形式提出过这个问题,但这些答案对我的情况都没有帮助。

TIA。

@Component
@Scope("singleton")
public class MyBean {

    private Map<String, ResourceManager> rm;

    public MyBean(final Map<String, ResourceManager> rm) {
        this.rm = rm;
    }
...
}

XML

<bean id="mybean" class="my.package.MyBean">
    <constructor-arg>
        <util:map>
            <entry key="MANAGER1" value-ref="manager1" />
            <entry key="MANAGER2" value-ref="manager2" />
        </util:map>
    </constructor-arg>
</bean>

<bean id="manager1".....</bean>

<bean id="manager2".....</bean>

【问题讨论】:

  • 您可以在没有默认构造函数的情况下执行此操作。但是我没有连接 Map,所以我不知道这是否是构造函数参数的正确方法。

标签: java spring code-injection default-constructor


【解决方案1】:

同样的问题得到了类似的答案,可能你遇到了同样的问题?

Does Spring require all beans to have a default constructor?

bean class instantiation in spring for a class without default constructor

尝试将构造函数标记为@Autowired。

【讨论】:

  • 谢谢,实际上是@Autowired 丢失了!
  • 这也是我需要的答案。虽然就我而言,我在构造函数上选择了@Inject。
猜你喜欢
  • 2017-02-28
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2016-10-29
  • 2021-06-07
相关资源
最近更新 更多