使用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. 從AngularJS調用Spring-Boot API
- 3. 流API:從枚舉
- 4. 用Spring Data REST公開枚舉枚舉
- 5. spring boot + mongo + rest:/ {repository}/schema
- 6. 獲取枚舉併發送枚舉值
- 7. Spring Boot 1.5.8.Release - Spring Data Mongo PropertyReferenceException
- 8. 從枚舉值NSString
- 9. 從鍵盤輸入到枚舉的值
- 10. 使用Hibernate從Postgres到Java的枚舉
- 11. Ada:如何將枚舉枚舉爲小寫
- 12. Spring Data findBy枚舉
- 13. 值枚舉的到陣列
- 14. Angular2使用枚舉值
- 15. 如何使用枚舉值?
- 16. 使用int值枚舉?
- 17. 獲取枚舉值(從.dll)到列表
- 18. 如何獲取枚舉大小寫的值?
- 19. 將多個列表枚舉值寫入另一個枚舉
- 20. 如何訪問Spring MVC中枚舉值
- 21. 使用列枚舉的LINQ表枚舉
- 22. 使用另一個枚舉中的特定值創建枚舉
- 23. 使用枚舉之前檢查有效的枚舉值
- 24. 使用基礎枚舉作爲依賴枚舉的默認值
- 25. 「枚舉大小寫的原始值不是唯一的」對於浮點原始值的Swift枚舉
- 26. 更新枚舉值從1到0 mysql?
- 27. Java枚舉找到枚舉
- 28. Spring Boot Servlet API Version
- 29. 任意大小的枚舉值
- 30. 在Spring Boot中驗證Mongo文檔