weixin_42300719 2010-04-08 12:08
浏览 1339
已采纳

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条回答

  • iteye_566 2010-04-08 12:17
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?