《Spring Recipes》第一章笔记:Specifying the Data Type ...

问题

默认情况下,Spring容器认为配置文件中设置的集合中的所有元素都是String类型。

解决方案:

可以使用<value>的type属性指定单个元素的数据类型类型,也可以再集合标签上使用value-type属性指定整个集合的数据类型。

例:

使用type属性
<bean id="sequenceGenerator"
class="com.apress.springrecipes.sequence.SequenceGenerator">
...
	<property name="suffixes">
		<list>
			<value type="int">5</value>
			<value type="int">10</value>
			<value type="int">20</value>
		</list>
	</property>
</bean>

使用value-type属性
<bean id="sequenceGenerator"
class="com.apress.springrecipes.sequence.SequenceGenerator">
...
	<property name="suffixes">
		<list value-type="int">
			<value>5</value>
			<value>10</value>
			<value>20</value>
		</list>
	</property>
</bean>

注意:

1、如果在bean中使用了泛型,Spring容器会根据泛型定义自动将配置的集合转换为正确的类型。
bean:
public class SequenceGenerator {
...
	private List<Integer> suffixes;
	public void setSuffixes(List<Integer> suffixes) {//使用了泛型
		this.suffixes = suffixes;
	}
	public synchronized String getSequence() {
		StringBuffer buffer = new StringBuffer();
		...
		DecimalFormat formatter = new DecimalFormat("0000");
		for (int suffix : suffixes) {
			buffer.append("-");
			buffer.append(formatter.format(suffix));
		}
		return buffer.toString();
	}
}

配置文件:
<bean id="sequenceGenerator"
class="com.apress.springrecipes.sequence.SequenceGenerator">
...
<property name="suffixes"><!-- 不用指定元素的类型 -->     <list>
        <value>5</value>
        <value>10</value>
        <value>20</value>
    </list>
</property>
</bean>

你可能感兴趣的:(spring)