您的位置:首页 > 编程语言 > Java开发

spring中如何给集合元素注入值(第四篇)

2015-12-14 09:27 465 查看
如果是数组的话,例如private String [] name,需要如下配置bean

<property name="name">

<list>

<value>小明</value>

<value>小刚</value>

</list>

</property>

如果类型是List的话则需如下配置

<property name="属性的名字" >

<list>

<ref bean="id1">

<ref bean="id2">

</list>

</property>

<bean id="id1" class="XXX">

<property name="XXX" value="XXX"/>

</bean>

<bean id="id2" class="XXX">
<property name="XXX" value="XXX"/>

</bean>

如果类型是Set类型的集合的话则把上面配置中的<list>改为<set>即可

配置Map类型的集合稍微有些麻烦,见如下
<map>
<entry key或key-ref=" XXX" value或value-ref="XXX"/>
</map>
通过for循环输出:
for(Entry<key,value> entry : 对象名.getMap().entrySet)
System.out.println(entry.getKey()+" "+entry.getValue().getName());

bean可以在<property>里配置,这种bean叫做内部bean,不能被外部引用。

如果在JAVA代码中类与类之间存在继承关系,那么在bean 中如何配置才能体现出类与类之间的继承关系呢?很简单,假如已经先配置好了父类的属性,在配置子类的属性的时候,只需在bean的属性中加入一个parent="父类的id"即可,如果自己单独配置子类和父类共有的属性的话,则会覆盖父类属性原有的值。

给某个属性注入空值:
<property name="XXX">
</null>
</property>

在bean中配置属性的时候可以通过对象的set方法来给属性注入值,也可以通过构造函数来给属性注入值,如下:
<constructor-arg index="0" type="java.lang.String" value="小明">
<constructor-arg index="1" type="int" value="23">

于是在加载beans文件的时候反射机制就会通过调用JAVA对象的构造函数来注入值,index表示第几个属性值,按照从上到下的顺序,从0开始,type表示值的类型。set注入属性的缺点是无法确定哪些属性是必须的,构造函数注入属性的话可以建立一个强制依赖的关系,例如只有一个显示的构造函数,有两个值,那么你在配置bean文件的时候必须把这两个值都给上。

一个类的属性包含用另一个类定义的对象时,配置beans的时候可以用ref来引用另一个对象,spring中还提供了另一种自动装配的方式,也就是在bean中的autowire属性制定,需要注意的是被引用的对象的id必须为类的属性的名字,这样才能找到并注入属性,autowire属性值有如下几种: byName(根据属性名自动装配),byType(根据类型装配,如果找到一个则装配,如果找到多个则抛出异常),constructor(需要在类里提供一个含有bean属性的构造函数),autodetect(在byType和constuctor两者之间选一个方式,后者级别高一些)defualt
下面的默认装配方式都为byName,根据属性值来确定,自动装配的默认值为default,而default的默认值为no。
自动装配最好能不用最不要用,因为没有直接set方法那么明确。

如果beans中再多个bean中的属性的值相同的话spring可以采取分散配置来处理,这样就不用在每个bean中重复的定义相同的属性。

说明: 当通过 context:property-placeholder 引入 属性文件的时候,有多个需要使用 , 号间隔.

<!-- 引入我们的db.properties文件 -->

<context:property-placeholderlocation="classpath:com/hsp/dispatch/db.properties,classpath:com/hsp/dispatch/db2.properties"/>

<!-- 配置一DBUtil对象 $占位符号 -->

<bean id="dbutil"class="com.hsp.dispatch.DBUtil">

<property name="name"value="${name}" />

<property name="drivername"value="${drivername}" />

<property name="url"value="${url}" />

<property name="pwd"value="${pwd}" />

</bean>

db.properties:

name=scott

drivername=oracle:jdbc:driver:OracleDirver

url=jdbc:oracle:thin:@127.0.0.1:1521:hsp

pwd=tiger
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: