spring 构造函数注入

本文详细介绍了Spring框架中构造函数注入的四种方法:按类型匹配、按索引匹配、联合入参以及通过自身类型反射注入参数。每种方式都有其特点和适用场景,例如按类型匹配可能导致注入错误,按索引匹配则需要确保参数顺序正确,而反射注入则可以引用其他bean实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数注入,要求必须要有对应的带参构造函数,不要求有无参的构造函数

方式 : 
第一种方式  按类型匹配入参

< bean id = "bear" class = "com.modle.Bear" >
                    < constructor-arg type = "string" >
<!-- String 要大写 或者 java.lang.String -->
< value > 熊大 </ value ></ constructor-arg >
                    < constructor-arg type = "int" >< value > 30 </ value ></ constructor-arg >
               </ bean >

根据参数类型,注入参数。
但是这种方式会导致入参错误。当构造函数重载的时候,比如两个都是string类型,传入的value 将不能区分是给哪个参数的。
第二种方式  、按索引匹配入参
      <!-- 构造函数注入  按所以匹配注入参数 -->
                    < bean id = "studetn" class = "com.modle.Student" >
                         < constructor-arg index = "0" >< value > 熊二 </ value ></ constructor-arg >
                         < constructor-arg index = "1" >< value > 3 </ value ></ constructor-arg >
                         < constructor-arg index = "2" >< value > 3.23 </ value ></ constructor-arg >
                    </ bean >
第三种方式  联合入参方式
< bean id = "people" class = "com.modle.People" >
               < constructor-arg type = "String" index = "0" >< value > 光头墙 </ value ></ constructor-arg >
               < constructor-arg type = "String" index = "1" > < value > 狗熊森林 </ value ></ constructor-arg >
               < constructor-arg type = "int" index = "2" >< value > 60 </ value ></ constructor-arg >
           </ bean >

第四种方式 通过自身类型反射注入参数
< bean id = "world" class = "com.modle.World" >
                < constructor-arg >< value > hello </ value ></ constructor-arg >
               < constructor-arg >< ref bean = "car" ></ ref ></ constructor-arg > <!-- 注入上面的bean -->
               < constructor-arg >< ref bean = "people" ></ ref ></ constructor-arg >
           </ bean >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值