《Spring攻略(第2版)》——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仓库 立即下载
相关文章
- mybatis-spring 集成
- 在Mybatis-spring中由于默认Autowired导致不能配置多个数据源的问题分析及解决
- spring cloud: Hystrix(三):健康指数 health Indicator
- spring mvc: 页面重定向调整
- spring: 在Spring应用中使用JDBC(使用profiles选择数据源/使用基于JDBC驱动的数据源)
- 20-spring学习-Spring MVC基本操作
- Spring-Boot-应用可视化监控
- [Spring Unit Testing] Spring Unit Testing with a Java Context
- spring 学习2-Spring Configuration in detail
- Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL
- [Spring] Factory Pattern
- web.xml初始化spring容器
- Spring中bean的scope
- Spring的注解@Qualifier小结
- Spring Cache扩展:注解失效时间+主动刷新缓存(二)
- Java Spring实现原理研究之Servlet initialization初始化过程
- 【Spring笔记11】Spring常见的几个可扩展接口(InitializingBean、DisposableBean、ApplicationContextAware等)
- 学习Spring Boot:(十四)spring-shiro的密码加密
- Spring Boot + Spring Cloud 集成 Consul 服务注册发现
- 【SFA官方翻译】Spring WebFlux和Spring Cloud进行响应式微服务开发
- 【Spring注解驱动开发】使用@Scope注解设置组件的作用域
- Spring Cloud是一系列框架的有序集合
- 12、笔记-spring组成