Spring通过构造⽅法注⼊的四种⽅式
通过构造⽅法注⼊,就相当于给构造⽅法的参数传值
set注⼊的缺点是⽆法清晰表达哪些属性是必须的,哪些是可选
的,构造注⼊的优势是通过构造强制依赖关系,不可能实例化不
完全的或⽆法使⽤的bean。
MemberBean定义四个变量,
private String name;
private Double salary;
private Dept dept;
private String sex;
加上构造⽅法和toString⽅法:⽅便
Dept:
private String dname;
spring framework扩展点private String deptno;
使⽤set⽅法注⼊
第⼀种⽅法:根据索引赋值,索引都是以0开头的:
<bean
id="memberBean" class="www.structor.MemberBean">
<constructor-arg index="0" value="刘晓刚" />
<constructor-arg index="1" value="3500" />
<constructor-arg index="2" ref="dept"/>
<constructor-arg index="3" value="男" />
第⼆种⽅法是根据所属类型传值
这种⽅法基本上不怎么适⽤,因为⼀个类⾥可以有好⼏个相同基本类型的变量,很容易就混淆值传给哪⼀个参数了所以做好不要使⽤这种⽅法:
<constructor-arg type=".lang.String" value="刘晓刚"
<constructor-arg type="java.lang.Double" value="3500" />
<constructor-arg type="www.structor.Dept" ref="dept"/>
<constructor-arg type="java.lang.String" value="男" />
第三种⽅法:根据参数的名字传值:(推荐⽤法)
在这⼏种⽅法⾥我感觉这种⽅法是最实⽤的,他是根据名字来传值的,所以基本上只要名字对了,这个值就可以获取到
<constructor-arg name="name" value="刘晓刚" />
<constructor-arg name="salary" value="3500" />
<constructor-arg name="dept" ref="dept"/>
<constructor-arg name="sex" value="男" />
第四种⽅法:直接传值
直接给参数赋值,这种⽅法也是根据顺序排的,所以⼀旦调换位置的话,就会出现bug,这种⽅法已经很原始了
<constructor-arg value="刘晓刚" />
<constructor-arg value="3500" />
<constructor-arg ref="dept"/>
<constructor-arg value="男" />
</bean>
<bean id="dept" class="www.structor.Dept" >
<property name="dname" value="北航"/>
<property name="deptno" value="00001"/>
</bean>S
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论