Spring Bean的属性值定义

原文地址:Spring Bean的属性值定义 作者:Crusoe
 

我们可以在Spring的配置文件中直接设置Bean的属性值。例如:你的Bean有一个“maxSize”属性,它表示每页显示数据的最大值,它有一个set方法。代码如下:

private int maxSize;

public void setMaxSize(int maxSize) {

this.maxSize = maxSize;

}

这样,你可以在Bean定义时设置这个属性的值:

<property name="maxSize"><value>20</value></property>

       前面介绍了Bean原始类型的属性设置。这种方式已经可以非常有效而便利的参数化应用对象。然而,Bean工厂的真正威力在于:它可以根据bean属性中描述的对象依赖来组装(wire)bean实例。例如:userDao对象的一个属性“sessionFactory”引用了另外一个Bean对象,即userDao对象实例依赖于sessionFactory对象:

<bean id="userDao" class="com.dev.spring.simple.HibernateUserDao">

  <property name="sessionFactory">

    <ref local="sessionFactory"/>

   </property>

</bean>

<bean id="sessionFactory"

  class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

  

</bean>

 

在这个简单的例子中,使用<ref>元素引用了一个sessionFactory实例。在ref标签中,我们使用了一个“local”属性指定它所引用的Bean对象。除了local属性之外,还有一些其它的属性可以用来指定引用对象。下面列出<ref>元素的所有可用的指定方式:

bean:可以在当前文件中查找依赖对象,也可以在应用上下文(ApplicationContext)中查找其它配置文件的对象。

local:只在当前文件中查找依赖对象。这个属性是一个XML IDREF,所以它指定的对象必须存在,否则它的验证检查会报错。

external:在其它文件中查找依赖对象,而不在当前文件中查找。

总的来说,<ref bean="..."/>和<ref local="..."/>大部分的时候可以通用。“bean”是最灵活的方式,它允许你在多个文件之间共享Bean。而“local”则提供了便利的XML验证。

 

复杂属性的定义也是允许的:

Springbean工厂不仅允许用String值和其他bean的引用作为bean组件的属性值,还支持更复杂的值,例如数组、java.util.Listjava.util.Mapjava.util.Properties。数组、setlistmap中的值不仅可以是String类型,也可以是其他bean的引用;map中的键、Properties的键和值都必须是String类型的;map中的值可以是setlist或者map类型

例如:

Null:

<property name=“bar”><null/></property>

 

List和数组:

<property name=“bar”>

  <list>

    <value>ABC</value>

    <value>123</value>

  </list>

</property>

 

Map:

<property name=“bar”>

  <map>

    <entry key=“key1”><value>ABC</value></entry>

    <entry key=“key2”><value>123</value></entry>

  </set>

</property>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值