기본적으로 필드의 @NumberFormat
및 @DateTimeFormat
을 통한 사용자 정의 지원과 함께 다양한 숫자 및 날짜 유형에 대한 포맷터가 설치됩니다.
Java 구성에 사용자 정의 포맷터 및 변환기를 등록하려면 다음을 사용하십시오.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
// ...
}
}
XML 구성에서 동일한 작업을 수행하려면 다음을 사용하십시오.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.example.MyConverter"/>
</set>
</property>
<property name="formatters">
<set>
<bean class="org.example.MyFormatter"/>
<bean class="org.example.MyAnnotationFormatterFactory"/>
</set>
</property>
<property name="formatterRegistrars">
<set>
<bean class="org.example.MyFormatterRegistrar"/>
</set>
</property>
</bean>
</beans>
기본적으로 Spring MVC는 날짜 값을 구문 분석하고 형식화할 때 요청 Locale을 고려합니다. 이는 날짜가 "input" 양식 필드가 있는 문자열로 표시되는 양식에 적용됩니다. 그러나 "date" 및 "time" 양식 필드의 경우 브라우저는 HTML 사양에 정의된 고정 형식을 사용합니다. 이러한 경우 날짜 및 시간 형식을 다음과 같이 사용자 정의할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setUseIsoFormat(true);
registrar.registerFormatters(registry);
}
}
[Note]
FormatterRegistrar 구현을 언제 사용해야 하는지에 대한 자세한 내용은FormatterRegistrar
SPI 및FormattingConversionServiceFactoryBean
을 참조하세요.