我正在尝试扩展 RepositoryRestMvcConfiguration
以覆盖自定义的 uriToEntityConverter
,但是这样做会导致 Jackson 无法序列化/反序列化 LocalDateTime
来自 String
。下面的代码显示了我的子类。
我还尝试将 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
属性来指定要使用的序列化器和反序列化器来解决这个问题,但这感觉更像是一个巫术仪式而不是解决方案。
最佳答案
所以我最终自行解决了这个问题。要实际扩展您还需要:
- 一个扩展
RepositoryRestConfigurerAdapter
的类 - 返回前一个类并实现
AutoConfigureAfter
注释的类
我的方法基于 RepositoryRestMvcAutoConfiguration
类,实际上在 Spring 中,但将其从 @ConditionalOnMissingBean(RepositoryRestMvcConfiguration.class)
更改为 @ConditionalOnBean(ExtendedRepositoryRestMvcConfiguration.class)
。这允许它使用我覆盖的函数正确配置 RestRepository
。
关于java - 扩展 RepositoryRestMvcConfiguration 打破了 Jackson LocalDateTime 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494321/