构造函数注入,要求必须要有对应的带参构造函数,不要求有无参的构造函数
方式 :
第一种方式 按类型匹配入参
<
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
>