当前位置: 首页 > news >正文

(17)注入自定义Date

我们前面说过,java.util.Date在Spring中被当做简单类型,简单类型在注入的时候可以直接使用value属性或value标签来完成。但我们之前已经测试过了,对于Date类型来说,采用value属性或value标签赋值的时候,对日期字符串的格式要求非常严格,必须是这种格式的:Mon Oct 10 14:30:26 CST 2022。其他格式是不会被识别的。如以下代码:

packagecom.powernode.spring6.bean;importjava.util.Date;/** * @author 动力节点 * @version 1.0 * @className Student * @since 1.0 **/publicclassStudent{privateDatebirth;publicvoidsetBirth(Datebirth){this.birth=birth;}@OverridepublicStringtoString(){return"Student{"+"birth="+birth+'}';}}
<beanid="studentBean"class="com.powernode.spring6.bean.Student"><propertyname="birth"value="Mon Oct 10 14:30:26 CST 2002"/></bean>
@TestpublicvoidtestDate(){ApplicationContextapplicationContext=newClassPathXmlApplicationContext("spring.xml");StudentstudentBean=applicationContext.getBean("studentBean",Student.class);System.out.println(studentBean);}

如果把日期格式修改一下:

<beanid="studentBean"class="com.powernode.spring6.bean.Student"><propertyname="birth"value="2002-10-10"/></bean>

这种情况下,我们就可以使用FactoryBean来完成这个骚操作。
编写DateFactoryBean实现FactoryBean接口:

packagecom.powernode.spring6.bean;importorg.springframework.beans.factory.FactoryBean;importjava.text.SimpleDateFormat;importjava.util.Date;/** * @author 动力节点 * @version 1.0 * @className DateFactoryBean * @since 1.0 **/publicclassDateFactoryBeanimplementsFactoryBean<Date>{// 定义属性接收日期字符串privateStringdate;// 通过构造方法给日期字符串属性赋值publicDateFactoryBean(Stringdate){this.date=date;}@OverridepublicDategetObject()throwsException{SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");returnsdf.parse(this.date);}@OverridepublicClass<?>getObjectType(){returnnull;}}

编写spring配置文件:

<beanid="dateBean"class="com.powernode.spring6.bean.DateFactoryBean"><constructor-argname="date"value="1999-10-11"/></bean><beanid="studentBean"class="com.powernode.spring6.bean.Student"><propertyname="birth"ref="dateBean"/></bean>
http://www.gsyq.cn/news/94165.html

相关文章:

  • 软件测试面试题及答案
  • JavaScript 中的可观测性(Observability):利用 Proxy 深度监控复杂对象状态变化的性能成本与算法优化
  • ArcGIS大师之路500技---025分类标注
  • 251211C语言学习总结
  • 【钓鱼攻防】浅谈CobaltStrike钓鱼手法集锦
  • 雅思培训班怎么选?2025高分上岸攻略和避坑指南 - 品牌测评鉴赏家
  • JavaScript 中的 `__proto__` 历史陷阱:为何动态修改原型链是现代 JIT 编译器的‘性能毒药’
  • OpenCV 第14课 图像处理之颜色识别(二)
  • 什么是FlexE
  • 面向命名实体识别的批判性地名学框架研究
  • 什么是防火墙即服务(FWaaS)
  • 二极管关键参数和选型
  • sigar监控系统资源
  • Android系统解决-授予管理所有文件的权限问题
  • 一文带你了解华为云认证详情
  • bibliometrix:科学文献分析的终极指南与快速上手教程
  • 《数据库运维》 郭文明 实验5 数据库性能监视与优化实验核心操作与思路解析
  • 用户体验设计终极指南:掌握产品成功的关键要素
  • 如何为特定应用选型滚珠导轨?
  • 冯·诺依曼计算机原理:现代计算机的“大脑蓝图”
  • 非冯·诺依曼原理与架构计算机深度研究报告
  • 2025最新广东劳务派遣服务外包公司TOP5评测!佛山等地劳务派遣服务外包服务商选择指南,专业赋能+合规高效榜单发布 - 全局中转站
  • 网络基础知识
  • 5步搭建Webhook自动化系统:从零到部署实战
  • 股票基础-第18课-K线图与基础形态
  • 低价游陷阱专坑老年人?
  • 深度揭秘OpenCode:20+编程工具如何重塑你的开发体验
  • 6、PHP 数组操作、文件处理与流的深入解析
  • 【大模型预训练】04-训练数据的类型分类:结构化数据、非结构化数据与半结构化数据的应用
  • 【大模型预训练】05-训练数据格式标准:JSON、TXT、CSV等格式对大模型训练的影响