考虑这个简单的例子 -
public class Person
{
private String name;
private Date dateOfBirth;
// getters and setters here...
}
为了将Person初始化为Spring bean,我可以编写以下内容。
<bean id = "Michael" class = "com.sampleDomainName.Person">
<property name = "name" value = "Michael" />
</bean>
但是在上面的bean定义中,我该如何设置dateOfBirth?
例如。我想将dateOfBirth设置为
1998-05-07
答案 0 :(得分:7)
像任何其他POJO一样对待它(<)。
<property name="dateOfBirth">
<bean class="java.util.Date" />
</property>
如果您需要使用显式值(例如1975-04-10),那么只需调用其中一个构造函数(尽管那些采用年度月日的构造函数已弃用)。您还可以使用明确的java.beans.PropertyEditor
Spring rolls with already(请参阅 6.4.2 一节;请注意您可以编写自己的编辑器并将其注册为您自己的类型)。您需要在配置中注册 CustomEditorConfigurer :
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date"
value="org.springframework.beans.propertyeditors.CustomDateEditor"/>
</map>
</property>
</bean>
然后您的数据如下:
<property name="dateOfBirth" value="1975-04-10" />
我可能会补充说Date
不是一个合适的数据类型来存储出生日期,因为Date
实际上是即时。您可能希望查看 Joda 并使用LocalDate
类。
答案 1 :(得分:3)
这里提到的答案之一很有用,但它需要额外的信息。需要提供CustomDateEditor的构造函数参数。
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date"> <ref local = "customDateEditor" />
</entry>
</map>
</property>
</bean>
<bean id = "customDateEditor" class="org.springframework.beans.propertyeditors.CustomDateEditor">
<constructor-arg>
<bean class="java.text.SimpleDateFormat">
<constructor-arg value="yyyy-MM-dd" />
</bean>
</constructor-arg>
<constructor-arg value="true" />
</bean>
现在我们可以做到
<property name="dateOfBirth" value="1998-05-07" />
答案 2 :(得分:0)
使用CustomDateEditor。它从早期开始就在春天。