Spring Cloud Datastore 自定义类型
2024-01-12 09:33 更新
可以使用自定义转换器来扩展对用户定义类型的类型支持。
- 转换器需要在两个方向上实现
org.springframework.core.convert.converter.Converter
接口。 - 用户定义的类型需要映射到Cloud Datastore支持的基本类型之一。
- 两个转换器的实例(读和写)都需要传递到
DatastoreCustomConversions
构造函数,然后必须将其作为DatastoreCustomConversions
的@Bean
使用。
例如:
我们希望在Singer
POJO上有一个类型为Album
的字段,并希望将其存储为字符串属性:
@Entity public class Singer { @Id String singerId; String name; Album album; }
其中Album是一个简单的类:
public class Album { String albumName; LocalDate date; }
我们必须定义两个转换器:
//Converter to write custom Album type static final Converter<Album, String> ALBUM_STRING_CONVERTER = new Converter<Album, String>() { @Override public String convert(Album album) { return album.getAlbumName() + " " + album.getDate().format(DateTimeFormatter.ISO_DATE); } }; //Converters to read custom Album type static final Converter<String, Album> STRING_ALBUM_CONVERTER = new Converter<String, Album>() { @Override public Album convert(String s) { String[] parts = s.split(" "); return new Album(parts[0], LocalDate.parse(parts[parts.length - 1], DateTimeFormatter.ISO_DATE)); } };
这将在我们的@Configuration
文件中进行配置:
@Configuration public class ConverterConfiguration { @Bean public DatastoreCustomConversions datastoreCustomConversions() { return new DatastoreCustomConversions( Arrays.asList( ALBUM_STRING_CONVERTER, STRING_ALBUM_CONVERTER)); } }
以上内容是否对您有帮助:
更多建议: