2016-10-25 1 views
1

Весенний ботинок 1.3.6-RELEASE У меня был класс ниже, зарегистрированный на майке. Каждое поле java.util.Date будет считано и возвращено как формат ISO8601. Однако при обновлении до 1.4.1-RELEASE он теперь иногда работает, а иногда нет. Каков новый правильный способ включить это?Как установить майку в весенний ботинок 1.4.1-RELEASE для преобразования дат в ISO 8601?

package com.mypackage; 

import java.lang.annotation.Annotation; 
import java.lang.reflect.Type; 
import java.text.ParseException; 
import java.text.ParsePosition; 
import java.util.Date; 

import javax.ws.rs.ext.ParamConverter; 
import javax.ws.rs.ext.ParamConverterProvider; 
import javax.ws.rs.ext.Provider; 

import com.fasterxml.jackson.databind.util.ISO8601Utils; 

@Provider 
public class DateTimeParamConverterProvider implements ParamConverterProvider { 

    @SuppressWarnings("unchecked") 
    @Override 
    public <T> ParamConverter<T> getConverter(Class<T> clazz, Type type, Annotation[] annotations) { 
     if (type.equals(Date.class)) { 
      return (ParamConverter<T>) new DateTimeParamConverter(); 
     } else { 
      return null; 
     } 
    } 

    static class DateTimeParamConverter implements ParamConverter<Date> { 
     @Override 
     public java.util.Date fromString(String value) { 
      if (value == null) { 
       return null; 
      } 
      try { 
       return ISO8601Utils.parse(value, new ParsePosition(0)); 
      } catch (ParseException e) { 
       throw new RuntimeException(e); 
      } 
     } 

     @Override 
     public String toString(Date value) { 
      return ISO8601Utils.format(value); 
     } 
    } 
} 

зарегистрировать этот провайдер, как это:

@Component 
@ApplicationPath("/") 
public class JerseyConfiguration extends ResourceConfig { 
    private static final Logger log = Logger.getLogger(JerseyConfiguration.class.getName()); 

    @Autowired 
    public JerseyConfiguration(LogRequestFilter lrf) { 
     register(new ObjectMapperContextResolverNonNull()); 
     register(RestServiceImpl.class); 
     property(ServletProperties.FILTER_FORWARD_ON_404, true); 
     register(DateTimeParamConverterProvider.class, 6000); 
... 

ответ

1

Просто определить это в вашем application.properties:

spring.jackson.date-format=com.fasterxml.jackson.databind.util.ISO8601DateFormat 
+0

О, это очень круто – Chip

Смежные вопросы