spring推断构造函数

  • 没有显式声明构造函数时,使用默认生成的构造函数
  • 如果只有一个构造函数,就会使用该构造函数,所以如果该构造函数如果有参数,该参数也必须要注入到容器中,否则编译报错。
  • 如果有多个构造函数
    • 其中含有无参构造函数,则使用无参构造函数,其他有参构造函数即使参数没有注入到容器中也不会报错
    • 其中不包含无参构造,也没有用@Autowired注解其他构造函数,编译报错
    • 其中不包含无参构造,但是用了@Autowired注解了一个有参构造,正常,而且其他没有被@Autowired注解的函数,即使参数没有注入到容器中,也不会报错

总结:
如果有无参构造函数,不管是显式还是隐式的,假设不通过@Autowired指定,就用无参构造函数。
如果没有无参构造函数,只有一个能用就直接使用它,有多个构造函数时如果有@Autowired的,就使用它,否则直接报错。
如果要使用那个有参构造,被用到的那个有参构造函数中的参数必须注入到容器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值