jackson 시간 포맷

3915 단어 JackSon
질문
일반 설정 방식
일반적으로 SpringBoot 프로젝트 에서 spring 은 기본적으로 jackson 변환 날 짜 를 사용 합 니 다. 기본 값 은 그리니치 시간 이 고 동 8 구 시간 이 아 닙 니 다.jackson 에 대한 다음 설정 을 통 해 포맷 시간 을 동 8 구 로 조정 할 수 있 습 니 다.
1. 대응 시간 필드 에 jackson 의 포맷 주 해 를 추가 합 니 다.
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;

2. 프로젝트 프로필 에서 jackson 설정, application. yml
spring:
  jackson:
	time-zone: GMT+8

사용자 정의 차단기 후의 jackson 설정
그러나 SpringBoot 프로젝트 에 WebMvc ConfigurationSupport 에 계 승 된 차단기 가 있 으 면 원래 설정 파일 에서 jackson 설정 이 실 효 됩 니 다. 즉, 위의 2 에서 설정 이 실 효 됩 니 다.따라서 사용자 정의 구현 클래스 에서 잭 슨 을 다시 설정 해 야 합 니 다. 설정 은 다음 과 같 습 니 다.
WebMvcConfigurationSupport 에 계 승 된 사용자 정의 차단기:
@Configuration
public class ResourcesConfig extends WebMvcConfigurationSupport {

    @Autowired
    private RepeatSubmitInterceptor repeatSubmitInterceptor;
    
	//              
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
	    registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
	    super.addInterceptors(registry);
    }
    
	//      
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
	    registry.addResourceHandler("resource/**").addResourceLocations("file:" + "/Users/resource/uploadPath/");
	    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
	    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
	    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
	    super.addResourceHandlers(registry);
    }
}

jackson 설정 추가 후:
@Configuration
public class ResourcesConfig extends WebMvcConfigurationSupport {

    @Autowired
    private RepeatSubmitInterceptor repeatSubmitInterceptor;
    
	//              
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
	    registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
	    super.addInterceptors(registry);
    }
    
    //      
	@Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
	    registry.addResourceHandler("resource/**").addResourceLocations("file:" + "/Users/resource/uploadPath/");
	    registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
	    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
	    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    	super.addResourceHandlers(registry);
    }
    
    /**
     * JackSon          
     * @return
     */
    @Bean
    public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
	    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
	    ObjectMapper objectMapper = new ObjectMapper();
		//                 
	    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
	    objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
		//        :LOWER_CAMEL_CASE       ,     
	    objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
	    objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));
	    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
	    jsonConverter.setObjectMapper(objectMapper);
	    return jsonConverter;
    }
    
    @Override
    public void configureMessageConverters(List> converters) {
	    converters.add(customJackson2HttpMessageConverter());
	    super.addDefaultHttpMessageConverters(converters);
    }

}

좋은 웹페이지 즐겨찾기