发布于2026-07-22 阅读(0)
扫一扫,手机访问
Spring注入Date类型的三种方法总结
先说说问题:Spring容器在处理依赖注入时,对于基本类型和String类型都能自动转换,但遇到ja va.util.Date就得手动搭把手了。下面整理了三种常见的实现方式,代码和配置直接可用。
测试Bean:
public class DateBean { private Date birthday; public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
方式1:利用SimpleDateFormat的构造方法注入
第一种方法,利用SimpleDateFormat,直接在构造方法层面上做文章。通过配置一个日期格式bean,再调用它的parse方法,把字符串转成Date。看配置文件:
方式2:纯配置,先自定义CustomDateEditor,再转换类型
第二种方法,走的是纯配置路线,得先自定义一个CustomDateEditor,然后再让Spring来帮忙转换。这里要注意,CustomEditorConfigurer是全局配置,之后所有Date类型的属性都会自动走这个转换规则。
方式3:先用一个类重写PropertyEditorSupport的setAsText方法,再在配置文件中配置转换类型
第三种方法,本质上跟第二种差不多,但更灵活一些:自己写一个转换器类,继承PropertyEditorSupport,重写setAsText方法。这样一来,转换逻辑完全可控,比如可以自定义格式,甚至做更复杂的校验。
public class MyDatePropertyEditor extends PropertyEditorSupport { private String format; public String getFormat() { return format; } public void setFormat(String format) { this.format = format; } // text为需要转换的值,当为bean注入的类型与编辑器转换的类型匹配时就会交给setAsText方法处理 public void setAsText(String text) throws IllegalArgumentException { SimpleDateFormat sdf = new SimpleDateFormat(format); try { this.setValue(sdf.parse(text)); } catch (ParseException e) { e.printStackTrace(); } } }
测试代码:
public class DateTest { @Test public void testName() throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext( "applicationContext.xml"); DateBean bean = (DateBean) context.getBean("datebean"); System.out.println(bean.getBirthday()); } }
以上就是三种常用的Spring注入Date类型的方法,从简单的工厂方法到全局的自定义编辑器,再到灵活的自实现转换器,可以根据实际场景选择。希望这个整理对你有帮助。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8