扩展RepositoryRestMvcConfiguration会破坏Jackson LocalDateTime序列化

时间:2017-04-19 11:22:01

标签: java spring spring-boot java-8 jackson

我正在尝试扩展RepositoryRestMvcConfiguration以覆盖自定义uriToEntityConverter,但这样做会导致Jackson无法从{{LocalDateTime序列化/反序列化String 1}}。下面的代码显示了我的子类。

我也尝试将jackson-datatype-jsr310添加到pom中以查看是否可以强制支持,但是如果没有我的子类,它仍可以正常工作,因此这主要是一个死胡同。

@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class RepositoryRestMvcConfigurer extends RepositoryRestMvcConfiguration {

  @Override
  @ConfigurationProperties(prefix = "spring.data.rest")
  public RepositoryRestConfiguration config() {
    return super.config();
  }


  @Override
  protected UriToEntityConverter uriToEntityConverter(ConversionService conversionService) {
    return new OverriddenUriToEntityConverter(persistentEntities(), repositoryInvokerFactory(conversionService), repositories());
  }
}

编辑: 我通过注释我的LocalDateTime属性来指定要使用的序列化器和反序列化器来解决这个问题,但这更像是一种伏都教仪式而非解决方案。

1 个答案:

答案 0 :(得分:2)

所以我最终自我解决了这个问题。要实际扩展你还需要:

  • 扩展RepositoryRestConfigurerAdapter
  • 的类
  • 返回上一个类并且还实现AutoConfigureAfter
  • 注释的类

我基于 Spring 中的RepositoryRestMvcAutoConfiguration类,但将其从@ConditionalOnMissingBean(RepositoryRestMvcConfiguration.class)更改为@ConditionalOnBean(ExtendedRepositoryRestMvcConfiguration.class)。这允许它使用重写的函数正确配置RestRepository