CustomEditor i Spring

Häromdagen så ville jag initiera lite statisk testdata i några Spring-bönor. Jag ville specificera lite datum som var av typen java.util.Date

Spring laddar diverse PropertyEditors för att hantera tolkning av diverse format, men just datum får man registrera själv (se här). Det är egentligen inte så konstigt eftersom dessa kan ha massor av olika format (Locale och sånt).

Efter lite läsning i Spring in Action och javadoc för CustomEditorConfigurer, så kom jag fram till följande:

<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer" id="customEditorConfigurer">
    <property name="customEditors">
        <map>
            <entry key="java.util.Date">
                <bean class="org.springframework.beans.propertyeditors.CustomDateEditor" id="datePropertyEditor">
                    <constructor-arg index="0">
                        <bean class="java.text.SimpleDateFormat">
                            <constructor-arg index="0">
                                <value>yyyy-MM-dd</value>
                            </constructor-arg>
                        </bean>
                    </constructor-arg>
                    <constructor-arg index="1">
                        <value>true</value>
                    </constructor-arg>
                </bean>
           </entry>
       </map>
   </property>
</bean>
import java.util.Date;
 
public class DateTest {
    private Date date;
 
    public Date getDate() {
        return date;
    }
 
    public void setDate(Date date) {
        this.date = date;
    }
}

Sen är det inga problem att mata in ett datum enligt följande:

<bean class="DateTest" id="dateTest">
    <property name="date" value="2006-08-10" />
</bean>

Nu kan du göra din egen personnummervariant!