当前位置: 首页 > 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.jsqmd.com/news/83960/

相关文章:

  • 软件测试面试题个人总结
  • JavaScript 中的可观测性(Observability):利用 Proxy 深度监控复杂对象状态变化的性能成本与算法优化
  • ArcGIS大师之路500技---025分类标注
  • 251211C语言学习总结
  • (18)Bean的生命周期
  • ArcGIS大师之路500技---026shp格式数据简介
  • 【钓鱼攻防】浅谈CobaltStrike钓鱼手法集锦
  • JavaScript 与 Rust 的底层绑定:实现高性能插件系统时的数据序列化与 FFI 调用的性能边界分析
  • 我其实不是好胜,我只是不想把这么美好的世界留给那帮傻子。
  • 软件测试面试题及答案【史上最全】
  • JavaScript 的声明式 Shadow DOM(DSD)与 SSR 集成:实现 Web Components 在服务端渲染的流式水合协议
  • 雅思培训班怎么选?2025高分上岸攻略和避坑指南 - 品牌测评鉴赏家
  • JavaScript 与 硬件加速:利用 WebUSB/WebSerial API 进行二进制流协议解析的状态机设计实践
  • JavaScript 中的 `__proto__` 历史陷阱:为何动态修改原型链是现代 JIT 编译器的‘性能毒药’
  • 12.13
  • Flex-Algo
  • 54
  • OpenCV 第14课 图像处理之颜色识别(二)
  • 向量数据库 vs 传统数据库 - yi
  • 什么是FlexE
  • 面向命名实体识别的批判性地名学框架研究
  • AI视频生成:如何用轻量级模型解决实际业务难题?
  • 什么是防火墙即服务(FWaaS)
  • Swagger Core实战指南:构建企业级API文档自动生成系统
  • 2025雅思报班红黑榜:6家靠谱机构测评+3步避坑攻略,考研必看! - 品牌测评鉴赏家
  • AsyncHttpClient WebSocket终极指南:从零构建高性能实时应用
  • 二极管关键参数和选型
  • 2025雅思报班攻略:机构测评+避坑指南,手把手教你选对机构 - 品牌测评鉴赏家
  • fastText预训练模型终极指南:5个步骤快速部署高效文本处理
  • 如何构建智能文档索引:推理检索的终极指南