使用Spring Boot,我公开了一个REST API,它接受我的域对象作为JSON正文并尝试将其保存到Mongo文档。我如何接受JSON请求和中这个枚举的小写值,并将它们以小写形式保存到Mongo中?使用Spring Boot从API到Mongo的小写枚举值
1
A
回答
0
关于接受枚举的小写值,你可以参考this answer
关于将它们保存到MongoDB的小写字母,以及,你需要编写自定义的转换器和注册相同。
典型写入转换器可以是这样的:
public final class YourEnumWriteConverter implements Converter<YourEnum, String> {
@Override
public String convert(YourEnum source) {
return source == null ? "" : source.name().toLowerCase();
}
}
您还需要编写相应的阅读器读取小写的字符串,从数据库成功枚举。一个典型的读取器会看起来像:
public final class YourEnumReadConverter implements Converter<String, YourEnum> {
@Override
public YourEnum convert(String source) {
return source == null ? null : Arrays.stream(YourEnum.values()).
filter(enumInstance -> enumInstance.name().equalsIgnoreCase(source.trim())).
findFirst().
orElse(null);
}
}
其中Converter
属于包org.springframework.core.convert.converter
,然后在@Configuration
文件,只需注册一样:
@Bean
public CustomConversions customConversions() {
List<Converter<?, ?>> converterList = new ArrayList<>();
converterList.add(new YourEnumWriteConverter());
converterList.add(new YourEnumReadConverter());
return new CustomConversions(converterList);
}
其中CustomConversions
属于org.springframework.data.mongodb.core.convert
这应该可以解决您的问题。这里需要注意的一件重要的事情是,如果你想在你的应用程序中使用所有枚举,或者应用程序中存在的一组特定的枚举可以保持为小写,那么我建议编写ConverterFactory
而不是单独编写一对Converter
每个这样的枚举。这个答案已经很长,所以没有写关于设立ConverterFactory
一些链接,这将是有益的:
相关问题
- 1. Spring Boot + Mongo + JWT
- 2. 流API:从枚举
- 3. 用Spring Data REST公开枚举枚举
- 4. spring boot + mongo + rest:/ {repository}/schema
- 5. 获取枚举并发送枚举值
- 6. 从枚举值NSString
- 7. Spring Boot 1.5.8.Release - Spring Data Mongo PropertyReferenceException
- 8. 使用Hibernate从Postgres到Java的枚举
- 9. Ada:如何将枚举枚举为小写
- 10. 值枚举的到阵列
- 11. 使用int值枚举?
- 12. Angular2使用枚举值
- 13. 如何使用枚举值?
- 14. 如何获取枚举大小写的值?
- 15. 将多个列表枚举值写入另一个枚举
- 16. 如何访问Spring MVC中枚举值
- 17. 使用列枚举的LINQ表枚举
- 18. 使用枚举之前检查有效的枚举值
- 19. “枚举大小写的原始值不是唯一的”对于浮点原始值的Swift枚举
- 20. 更新枚举值从1到0 mysql?
- 21. Java枚举找到枚举
- 22. 任意大小的枚举值
- 23. 进样值到枚举
- 24. 在Spring Boot中设置Mongo超时
- 25. 在Spring Boot中验证Mongo文档
- 26. 使用枚举
- 27. C#:基于不同枚举类型的枚举值返回枚举值
- 28. .NET枚举大小?
- 29. 枚举值碰撞枚举名
- 30. WPF C# - 绑定枚举到组合框,但不使用所有枚举值