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

如果是数组的话,例如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



你可能感兴趣的:(spring中如何给集合元素注入值(第四篇))