Spring上下文属性配置及标签使用总结

一.声明一个简单的<bean>

如果使用XML文件来装备bean的话,那么<bean>标签是不可或缺的,首先我个人认为,bean其实就是一个对象,我们通过配置bean将对象置于一个容器中去,当我们需要时,这个容器就能够传递给我们需要的对象。

<bean>标签经常用到的属性有两个 id , class ,id 属性的值其实就相当于bean的名字,也就是对象的名字,而class属性的值则是通过类的全限定名(反射)来指定bean的类型,当我们Spring发现<bean>这个标签时,它会调用class属性所指定的类的默认构造器来创建bean,所以如果我们没有通过构造器形式(也就是<constructor-arg>标签)来初始bean的话,我们一定要给类提供一个无参构造方法

二.通过构造器注入初始化bean

我们可以在<bean>标签的下方声明若干个<constructor-arg>标签,每个标签都相当于类构造方法中的一个field(属性),或者我们可以使用c-命名空间来实现构造器初始化。

<constructor-arg>标签常用的属性有value,index,reftype,value表示参数的值,index表示是第几个参数,type表示值的类型,ref表示外部应用的值,比如:

<constructor-arg value="shanghai" index="0" type="java.lang.String"></constructor-arg>

c-命名空间相对于<constructor-arg>标签则显得更加的简洁,可以直接通过c:构造器参数名=要注入的值或者c:构造器参数名-ref=要注入的bean的id 这样的形式来实现通过构造器注入bean,比如:

<bean id="cdPlayer" class="soundsystem.CDPlayer" c:cd="compactDisc">

或者我们可以使其更加短小一些,直接通过参数在参数列表的位置信息来实现注入,c:_0=要注入的值(c:_0-ref=要注入的bean的id),0表示参数的索引,因为XML中不允许数字作为属性的第一个字符,因此需要添加一个下划线作为前缀,比如:

<bean id="cdPlayer" class="soundsystem.CDPlayer" c:_0="compactDisc" c:_1="hahahah">

三.设置属性

如果我们选择属性注入的方式来初始化bean的话,那么一定要保证类中有无参构造方法,否则将会报错。

我们可以在<bean>标签的下方声明若干个<property>标签,每个标签都相当于类中的一个field(属性),或者我们可以使用p-命名空间来实现属性注入

<property>标签常用的属性有name,valueref,name的值表示类中属性的名字(更详细一点,应该是setter方法的名字),value的值表示表示注入到类中属性的值,ref表示外部引用的值,比如:

<property name="brand" value="hahahahah" ></property>

p-命名空间的用法与c-命名空间的用法类似,即p:属性名=要注入的属性值p:属性名=要注入的bean的id,比如:

<bean id="cdPlayer" class="soundsystem.CDPlayer" p:compactDisc="compactDisc">

四.列表bean

通过util-命名空间所提供的功能之一<util:list>,我们可以创建一个列表bean,我们可以外部引用该列表bean来实现List类型属性的注入,具体实现如下:

<util:list id="trackList">
    <value>hello</value>
    <value>world</value>
</util:list>

我们可以通过其id引用这个bean,比如:

<constructor-arg ref="trackList" index="0">

当然,除了<value>这个子标签,<util:list>还有许多的子标签,这里就不一一列举了。

五.内部bean

我们可以在<property>标签或<constructor-arg>标签的内部将bean作为其子标签来实现内部bean,由于内部bean无法被外部引用且会直接将其注入到属性或参数中去,因此无需设置id属性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值