복붙노트

[SPRING] 스프링 XML 구성 파일에서 Java Date 객체를 초기화하는 방법은 무엇입니까?

SPRING

스프링 XML 구성 파일에서 Java Date 객체를 초기화하는 방법은 무엇입니까?

이 간단한 예를 생각해보십시오.

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

    // getters and setters here...
 }

Person을 Spring 빈으로 초기화하기 위해서 다음과 같이 작성할 수있다.

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

하지만 위의 bean 정의에서 어떻게 생년월일을 설정할 수 있습니까?

예를 들면. dateOfBirth를 다음과 같이 설정하려고합니다.

1998-05-07

해결법

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

    1.다른 POJO (있는 그대로)로 취급하십시오.

    다른 POJO (있는 그대로)로 취급하십시오.

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

    명시 적 값 (예 : 1975-04-10)을 사용해야하는 경우, 다른 생성자 중 하나를 호출하십시오 (연도 - 월 - 일을 사용하는 것이 더 이상 사용되지 않습니다). Spring이 이미 롤오버 한 명시 적 java.beans.PropertyEditor를 사용할 수도 있습니다 (6.4.2 절 참고, 사용자 고유의 편집기를 작성하여 사용자 고유의 유형으로 등록 할 수 있음). config에 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가 실제로 instant-in-time이기 때문에 Date가 birth-of-birth를 저장할 적절한 데이터 유형이 아니라고 추가 할 수 있습니다. Joda를보고 LocalDate 클래스를 사용하는 것이 좋습니다.

  2. ==============================

    2.여기에 언급 된 답변 중 하나가 유용하지만 추가 정보가 필요합니다. CustomDateEditor의 생성자 인수를 제공해야합니다.

    여기에 언급 된 답변 중 하나가 유용하지만 추가 정보가 필요합니다. 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" />
    
  3. ==============================

    3.Spring에서 날짜를 bean 속성에 삽입 - CustomDateEditor

    Spring에서 날짜를 bean 속성에 삽입 - CustomDateEditor

    이 백서에서는 두 가지 제안 사항을 제시합니다.

    CustomDateEditor가 Spring 4.0+에서 지원되지 않고 Factory Bean이 사용하기에 충분히 쉽기 때문에 "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>
    
  4. ==============================

    4.CustomDateEditor를 사용하십시오. 초기에는 봄이었습니다.

    CustomDateEditor를 사용하십시오. 초기에는 봄이었습니다.

  5. from https://stackoverflow.com/questions/11198297/how-to-initialize-a-java-date-object-in-spring-xml-configuration-file by cc-by-sa and MIT license