2012-06-25 17 views
8

Considere este ejemplo sencillo -¿Cómo inicializar un objeto Java Date en el archivo de configuración Spring xml?

public class Person 
{ 
    private String name; 
    private Date dateOfBirth; 

    // getters and setters here... 
} 

Para inicializar persona como un grano de primavera, puedo escribir lo siguiente.

<bean id = "Michael" class = "com.sampleDomainName.Person"> 
<property name = "name" value = "Michael" /> 
</bean> 

Pero en la definición de bean anterior, ¿cómo puedo configurar la fecha de nacimiento?

Por ej. Quiero configurar el fechaDeNacimiento como

1998-05-07 

Respuesta

2

Una de las respuestas mencionadas aquí es útil, pero necesita información adicional. Los argumentos del constructor para CustomDateEditor deben ser suministrados.

<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> 

Ahora podemos hacer

<property name="dateOfBirth" value="1998-05-07" /> 
7

tratarlo como cualquier otro POJO (que se es)

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

Si es necesario utilizar un valor explícito (por ejemplo, 10/04/1975), luego simplemente llame a uno de los otros constructores (aunque aquellos que toman año-mes-día están en desuso). También puede usar un java.beans.PropertyEditor explícito que Spring rolls with already (consulte la sección 6.4.2; tenga en cuenta que puede escribir sus propios editores y registrarlos para sus propios tipos). Es necesario registrar el CustomEditorConfigurer en su configuración:

<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> 

A continuación, los datos se parece a:

<property name="dateOfBirth" value="1975-04-10" /> 

podría añadir que es Dateno un tipo de datos apropiado para almacenar una fecha- of-birth porque Date es realmente un instant-in-time. Es posible que desee mirar Joda y utilizar la clase LocalDate.

+0

Probablemente quiera inicializarlo en una fecha específica, no en la hora actual. –

-1

Spring inject Date into bean property – CustomDateEditor

En este trabajo se dan dos sugerencias:

  1. frijol fábrica
  2. CustomDateEditor

Sugiero el "Factory Bean" porque CustomDateEditor no es compatible con Spring 4.0+ y Factory Bean es bastante fácil de usar.

<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> 
+0

¿Puede incluir algunos conceptos básicos de lo que cubre el enlace? De lo contrario, si este enlace no está disponible en el futuro, esta respuesta ya no se comunicará. –

+0

@DanLowe Hola, he agregado un ejemplo del enlace que sugerí – nkduqi

Cuestiones relacionadas