Spring学习笔记 关于Bean属性的初始化

依赖注入,可以使Bean中的属性通过Spring进行配置,从HelloWorld中可以看到,由Spring的XML配置文件决定了对象被创建时它的属性是如何被初始化的。Spring配置文件中定义Bean同时就定义了它的属性的值或引用的对象,HelloWorld中是通过Bean中的Setter方法实现的。算起来Spring中初始化类属性值有两种方法,第一种,使用Bean中的Setter方法,第二种使用类的构造方法进行初始化,Spring在配置文件中进行定义的时候同样可以定义它的构造函数所需的参数。

例如HelloWorld笔记中的MessageLooper类,初始化 numTimes属性值可以使用带有int参数的构造方法进行初始化,也可以通过XML配置文件中Bean的定义使用numTimes的Setter方法进行初始化。如下:

(7ZY`JZFXX0)PPMAWDCK6[V  

使用Setter初始化属性值在XML中Bean的定义示例:

IF9SQW[(O$D0ATE`CM(%C{B

使用构造函数初始化属性值:

GZ$}A8NH4`46KLTF{0%CIUH  

可以注意到MessageLooper的带参构造方法的参数类型为int,上图中Spring会根据参数类型来进行转换。

以上为简单示例,如果构造方法有多个参数值,XML中定义的方法为:

UXM$BJ$PSTSIFKKBA49PMUF

对于有多个参数的构造方法使用index确定构造方法参数与定义中值的对应关系。

假如有一种情况,一个方法有两个构造方法,如下

CX)M%M{Y1DQ(2P6BULVZFIU

InjectionMail类中有两个都是带有一个参数的构法方法,其中一个参数为String类型,另外一个参数为int型。对于这种情况如果仍然使用上边示例XML中Bean的构造方法定义(例如:<constructor-arg  value=“235”/>),Spring将会无法分清创建对象时应该使用哪个构造方法。这时我们需要对参数类型进行定义,定义参数类型使用type属性,如下

[D]Y]Z0W9UUPB1HD$`)_Q77

构造方法的参数也有可能是引用变量,例如:

X_HNF~D$8FMS[{R4FD]S](8

定义引用变量类型参数可以使用ref属性

I2WJS0S$5FE}BO6@IMHH[ON

使用<constructor-arg value=“×××” /> 定义的参数值value属性的值可以根据构造方法中定义的参数类型进行转换。以下为转换示例:

上述配置中部分参数定义的其他可选方法:

L4J`P0][I_EJR)M$E6SLD%0

一般来说为了灵活性扩展性推荐使用setter方法对Bean的属性进行初始化。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值