当前位置: 首页 > news >正文

【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器

【Spring连载】使用Spring Data访问 MongoDB----对象映射之属性转换器

  • 一、声明式值转换器
  • 二、编程式值转换器注册
  • 三、MongoCustomConversions配置

虽然基于类型的转换已经提供了影响目标存储中某些类型的转换和表示的方法,但当仅考虑特定类型的某些值或属性进行转换时,它会受到限制。基于属性的转换器允许以声明方式(通过@ValueConverter)或编程方式(通过为特定属性注册PropertyValueConverter)按每个属性配置转换规则。
PropertyValueConverter可以将给定值转换为其存储表示形式(写入)和返回(读取),如下所示。额外的ValueConversionContext提供了额外的信息,例如映射元数据和直接读写方法。
例1:一个简单的PropertyValueConverter

class ReversingValueConverter implements PropertyValueConverter<String, String, ValueConversionContext> {@Overridepublic String read(String value, ValueConversionContext context) {return reverse(value);}@Overridepublic String write(String value, ValueConversionContext context) {return reverse(value);}
}

你可以通过委托给PropertyValueConversions,通常通过使用PropertyValueConverterFactory来提供实际的转换器,从CustomConversions#getPropertyValueConverter(…)获得PropertyValueConverter实例。根据应用程序的需要,可以链接(chain)或装饰(decorate)PropertyValueConverterFactory的多个实例 — 例如应用caching。默认情况下,SpringDataMongoDB使用缓存实现,该实现可以为具有默认构造函数或枚举值的类型提供服务。一组预定义的工厂可通过PropertyValueConverterFactory中的工厂方法获得。您可以使用PropertyValueConverterFactory.beanFactoryAware(…)从ApplicationContext获取PropertyValueConverter实例。

您可以通过ConverterConfiguration更改默认行为。

一、声明式值转换器

二、编程式值转换器注册

三、MongoCustomConversions配置

http://www.lryc.cn/news/309891.html

相关文章:

  • 【axiox】前后端接口通讯数据交互
  • 《Linux C编程实战》笔记:共享内存
  • 【GitHub】修改默认分支
  • 常用Linux 命令汇总
  • 13 双口 RAM IP 核
  • 【高级数据结构】Trie树
  • 国际化 Vue-i18n的安装与使用 (Vue2.0 / Vue3.0)
  • Linux 学习笔记(8)
  • 【python】1.python3.12.2和pycharm社区版的安装指南
  • Ubuntu将c++编译成.so文件并测试
  • 数据分析-Pandas数据的探查面积图
  • 美团分布式 ID 框架 Leaf 介绍和使用
  • Ubuntu20.04: UE4.27 中 Source Code 的编辑器下拉框没有 Rider选项
  • 【论文阅读-PRIVGUARD】Day4:3节
  • 新一代电话机器人开源PHP源代码
  • dockerdocker-copose_限制容器cpu和内存
  • 【leetcode】圆圈中最后剩下的数字
  • 利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表
  • 远程服务器Ubuntu 18.04安装VNC远程桌面
  • 30天自制操作系统(第23天)
  • 基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景
  • 【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。
  • Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例
  • JetBrains Gateway Github Copilot 客户端插件和主机插件
  • 【web APIs】3、(学习笔记)有案例!
  • 使用css reset 还是使用Normalize.css
  • 英语中的提问方式(问法)(bug提问、bug描述)
  • xss.haozi.me靶机练习
  • 2.1 mov、add和sub加减指令实操体验
  • 计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶