spring使用构造函数注入时必须要有默认构造函数?

<bean id="foo1" class="com.wl.test.Foo">
<constructor-arg index="1">
<value>张军</value>
</constructor-arg>
<constructor-arg index="0">
<value>23</value>
</constructor-arg>
</bean>


   在Foo类里,
public Foo(int id, String name) {
this.id = id;
this.name = name;
}


   如果不给出默认构造方法的话,就会报错:Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.wl.test.Foo]: No default constructor found;

4个回答

在Java中,如果你自己写了一个构造器,那么Java机制将不会提供给你一个默认的构造器,除非你的类中无任何构造器时它才会提供默认的,但是Spring注入时,不管你是否添加属性的注入,它都要去寻找默认构造器,为的是一旦你不注入属性了,也能找到默认构造器,所以,规范的Java写法是:如果你自己写了构造器,那就把默认的也写出来。。。

必须要有一个默认的没有参数的构造函数吧

必须有一个public的无参构造函数

必须的public无参的构造函数

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问