springbootグローバル日付フォーマット
springbootグローバル日付フォーマットには2つの方法があります.
springbootグローバル日付フォーマットには2つの方法があります.
方式一は設定パラメータです.
パラメータ設定の方式は、jsonのプログレッシブ時に、フィールドが日付タイプの場合のformatタイプは、すべての日付フィールドに注釈を付けたのと同じです.
@Json Format(shop=Json Format.Shape.STRING、pattern=「yyy-M-dd HH:mm:ss」)ですが、各フィールドに注釈を付けるのは面倒くさいので、直接全体配置を使って実現します.
パラメータ設定も2つの構成に分けられます.
一つ目はymlの構成です.
まず一つのstringからdateに変換するクラスを定義します.convertインターフェースを実現する必要があります.
なお、ユーザーがWebMvcConfigrationSupportを再実現した後、ymlで定義されている静的リソースパスなどが無効になりますので、ここで再度静的リソースパスを追加する必要があります.
springbootグローバル日付フォーマットには2つの方法があります.
方式一は設定パラメータです.
パラメータ設定の方式は、jsonのプログレッシブ時に、フィールドが日付タイプの場合のformatタイプは、すべての日付フィールドに注釈を付けたのと同じです.
@Json Format(shop=Json Format.Shape.STRING、pattern=「yyy-M-dd HH:mm:ss」)ですが、各フィールドに注釈を付けるのは面倒くさいので、直接全体配置を使って実現します.
パラメータ設定も2つの構成に分けられます.
一つ目はymlの構成です.
spring:
jackson:
# :
#JsonInclude.Include.ALWAYS
#JsonInclude.Include.NON_DEFAULT
#JsonInclude.Include.NON_EMPTY (””) NULL
#JsonInclude.Include.NON_NULL NULL
default-property-inclusion: ALWAYS
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
第二に、プロファイルの構成です.#jackson
spring.jackson.date-format = yyyy-MM-dd HH:mm:ss
#
spring.jackson.time-zone= GMT+8
#ALWAYS null, key, yml
spring.jackson.default-property-inclusion=ALWAYS
方式二はカスタム変換クラスです.まず一つのstringからdateに変換するクラスを定義します.convertインターフェースを実現する必要があります.
import org.apache.commons.lang.StringUtils;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* handler
* @author
* @date 2019-06-03
*/
@Component
public class DateConverterConfig implements Converter {
private static final List formarts = new ArrayList<>(4);
private static final String YYYY_MM = "yyyy-MM";
private static final String YYYY_MM_DD = "yyyy-MM-dd";
private static final String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";
private static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
static{
formarts.add(YYYY_MM);
formarts.add(YYYY_MM_DD);
formarts.add(YYYY_MM_DD_HH_MM);
formarts.add(YYYY_MM_DD_HH_MM_SS);
}
@Override
public Date convert(String source) {
if (StringUtils.isBlank(source)) {
return null;
}
source = source.trim();
if(source.matches("^\\d{4}-\\d{1,2}$")){
return parseDate(source, formarts.get(0));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
return parseDate(source, formarts.get(1));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(2));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(3));
}else {
throw new IllegalArgumentException("Invalid false value '" + source + "'");
}
}
/**
*
* @param dateStr String
* @param format String
* @return Date
*/
private Date parseDate(String dateStr, String format) {
Date date;
try {
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(dateStr);
} catch (Exception e) {
throw new IllegalArgumentException(e.getLocalizedMessage());
}
return date;
}
}
第二ステップはこの変換クラスをWebMvcConfigrationSupportに追加します.なお、ユーザーがWebMvcConfigrationSupportを再実現した後、ymlで定義されている静的リソースパスなどが無効になりますので、ここで再度静的リソースパスを追加する必要があります.
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* Converters Formatters.
*/
@Override
protected void addFormatters(FormatterRegistry registry) {
registry.addConverter(new DateConverterConfig());
}
/**
* WebMvcConfigurationSupport, yml 。
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.addResourceLocations("classpath:/resources/")
.addResourceLocations("classpath:/META-INF/resources/");
super.addResourceHandlers(registry);
}
}