10

考虑这个简单的例子 -

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
4

4 回答 4

7

像对待任何其他 POJO 一样对待它(这是)

<property name="dateOfBirth">
  <bean class="java.util.Date" />
</property>

如果您需要使用显式值(例如 1975-04-10),则只需调用其他构造函数之一(尽管不推荐使用年月日的构造函数)。你也可以使用显式的java.beans.PropertyEditorwhich Spring rolls(参见第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,因为它实际上是一个Instant-in-time。你可能想看看Joda并使用这个LocalDate类。

于 2012-06-25T22:36:41.653 回答
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" />
于 2012-06-28T17:07:17.303 回答
1

Spring 将 Date 注入 bean 属性 – CustomDateEditor

本文给出两个建议:

  1. 工厂豆
  2. 自定义日期编辑器

我建议使用“Factory Bean”,因为 Spring 4.0+ 不支持 CustomDateEditor,而且 Factory Bean 很容易使用。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="dateFormat" class="java.text.SimpleDateFormat">
        <constructor-arg value="yyyy-MM-dd" />
    </bean>

    <bean id="customer" class="com.mkyong.common.Customer">
        <property name="date">
            <bean factory-bean="dateFormat" factory-method="parse">
                <constructor-arg value="2010-01-31" />
            </bean>
        </property>
    </bean>

</beans>
于 2015-09-14T02:39:44.990 回答
0

使用CustomDateEditor。从一开始就在春天。

于 2012-06-25T22:37:42.723 回答