zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《Spring攻略(第2版)》——1.6 为集合元素指定数据类型

Spring集合 元素 指定 数据类型 攻略 1.6
2023-09-11 14:17:34 时间

本节书摘来自异步社区《Spring攻略(第2版)》一书中的第1章,第1.6节,作者: 【美】Gary Mak , Josh Long , Daniel Rubio著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.6 为集合元素指定数据类型

1.6.1 问题
默认情况下,Spring将集合中所有元素作为字符串对待。如果你不打算将集合元素作为字符串使用,就必须为它们指定数据类型。

1.6.2 解决方案
你可以用标记的type属性指定每个集合元素的数据类型,也可以用集合标记的value-type属性指定所有元素的数据类型。如果你使用Java 1.5或者更高版本,可以定义类型安全的集合,这样Spring将读取集合的类型信息。

1.6.3 工作原理
现在假定你打算接受一系列整数作为序列生成器的前缀。每个数字将由一个java.text. DecimalFormat实例格式化为4位数字。

package com.apress.springrecipes.sequence;

public class SequenceGenerator {

 private List Object suffixes;

 public void setSuffixes(List Object suffixes) {

 this.suffixes = suffixes;

 public synchronized String getSequence() {

 StringBuffer buffer = new StringBuffer();

 DecimalFormat formatter = new DecimalFormat("0000");

 for (Object suffix : suffixes) {

 buffer.append("-");

 buffer.append(formatter.format((Integer) suffix));

 return buffer.toString();

然后和往常一样,在Bean配置文件中为你的序列生成器定义多个后缀。

 bean id="sequenceGenerator"

 property name="prefixGenerator" ref="datePrefixGenerator" / 

 property name="initial" value="100000" / 

 property name="suffixes" 

 list 

 value 5 /value 

 value 10 /value 

 value 20 /value 

 /list 

 /property 

 /bean 

但是,当你运行这个应用程序时,将会遇到一个ClassCastException异常,指出后缀不能转换为整数,因为其类型是String。Spring默认将集合中的每个元素作为字符串对待。你必须设置标记的type属性指定元素类型。

 bean id="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"

 property name="suffixes" 

 list value-type="int" 

 value 5 /value 

 value 10 /value 

 value 20 /value 

 /list 

 /property 

 /bean 

在Java 1.5或者更高版本中,你可以用存储整数的类型安全集合定义suffixes列表。

package com.apress.springrecipes.sequence;

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();

一旦以类型安全的方式定义了集合,Spring就能够通过反射读取集合的类型信息。这样,你就不再需要指定的value-type属性。

 bean id="sequenceGenerator"

 property name="suffixes" 

 list 

 value 5 /value 

 value 10 /value 

 value 20 /value 

 /list 

 /property 

 /bean 

Spring框架中注入集合对象 你好看官,里面请!今天笔者讲的是在Spring框架中关于注入集合对象的用法(有示例!全网最详细!!) 不懂可以在评论区留言,我看到会及时回复。 注意:本文仅用与学习参考,不可用于商业用途。
Spring源码分析(三)Spring是如何把元素解析成BeanDefinition对象的 spring中解析元素最重要的一个对象应该就属于 BeanDefinition了;这个Spring容器中最基本的内部数据结构;它让xml文件中所有的配置有了一个归属的地方;在xml中存在的配置都能在BeanDefinition找到对应的属性;我们今天来看看BeanDefinition是如何被创建的
Spring 工具类之基本元素判断 实际业务开发中偶尔会遇到判断一个对象是否为基本数据类型,除了我们自老老实实的自己写之外,也可以借助 Spring 的 BeanUtils 工具类来实现
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载