복붙노트

[SPRING] Spring 4.0에서의 문자열 변환

SPRING

Spring 4.0에서의 문자열 변환

나는 봄 4.0.0 M3에서 자신을 교육하고있다. 다음은 코드입니다.

package org.chebus.springs;

import java.util.Date;

public class Traingle {
    private String name;
    private int height;
    private Date date;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public void drawShape() {
        System.out.println(getName() + " Traingle height " + getHeight()
                + " Date = " + getDate());
    }

}

본관

ApplicationContext ctx = new ClassPathXmlApplicationContext("org/chebus/springs/Spring.xml");
        Traingle traingle = ctx.getBean("traingle",Traingle.class);
        traingle.drawShape();

XML 구성

<?xml version="1.0" encoding="UTF-8"?>
<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 = "traingle" class="org.chebus.springs.Traingle">
  <property name="name" value = "RightAngled"/>
  <property name="height" value = "20"/>
  <property name="date" value = "2013-09-10"/>
</bean>

<bean id="dateEditor"
        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>

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="customEditors">
            <map>
                <entry key="java.util.Date">
                    <ref local="dateEditor" />
                </entry>
            </map>
        </property>
    </bean>


</beans>

예외:

내가 어디로 잘못 가고 있는지 확실하지 않습니다. 당신의 도움을 주셔서 감사합니다. 감사!

해결법

  1. ==============================

    1.잘 잡으십시오, 이것은 Spring 4.0+에서 새로운 동작으로 보이고, 여러분의 코드는 Spring의 3.2.x 버전에서 깨끗하게 작동합니다.

    잘 잡으십시오, 이것은 Spring 4.0+에서 새로운 동작으로 보이고, 여러분의 코드는 Spring의 3.2.x 버전에서 깨끗하게 작동합니다.

    이유는 customEditors의 유형이 CustomEditorConfigurer가 Spring 4.0 이상으로 변경되었습니다. Spring 3.2.x에서 Map 유형 이었지만 Map , Class >를 확장합니다.

    해결 방법은 다음과 같이 사용자 정의 PropertyEditorRegistrar를 대신 작성하는 것입니다.

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.springframework.beans.PropertyEditorRegistrar;
    import org.springframework.beans.PropertyEditorRegistry;
    import org.springframework.beans.propertyeditors.CustomDateEditor;
    
    public class CustomDateEditorRegistrar implements PropertyEditorRegistrar {
    
         @Override
         public void registerCustomEditors(PropertyEditorRegistry registry) {
             registry.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));
         }
    }
    

    구성에서이를 사용하려면 다음을 수행하십시오.

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="propertyEditorRegistrars">
            <list>
                <bean class="dateeditor.CustomDateEditorRegistrar"/>
            </list>
        </property>
    </bean>
    
  2. ==============================

    2.봄에는 기본적으로 날짜 값이 내장되어 있지 않습니다. 여기 있습니다 : 스프링 XML 구성 파일에서 Java Date 객체를 초기화하는 방법은 무엇입니까?

    봄에는 기본적으로 날짜 값이 내장되어 있지 않습니다. 여기 있습니다 : 스프링 XML 구성 파일에서 Java Date 객체를 초기화하는 방법은 무엇입니까?

  3. from https://stackoverflow.com/questions/18706869/string-to-date-conversion-in-spring-4-0 by cc-by-sa and MIT license