4.2. 使用嵌入式缓存根据需要转换数据
嵌入式缓存具有 application/x-java-object
的默认请求编码,以及一个与您为缓存配置的介质类型对应的存储编码。这意味着,Data Grid marshalls 从应用程序到缓存的存储编码,然后返回 POJOs 返回到应用程序。在一些复杂的场景中,您可以使用 AdvancedCache
API 将默认转换从 POJO 更改为其他编码。
以下示例使用 withMediaType ()
方法根据需要以 application/json
返回值。
带有 MediaType 的高级缓存
DefaultCacheManager cacheManager = new DefaultCacheManager(); // Encode keys and values as Protobuf ConfigurationBuilder cfg = new ConfigurationBuilder(); cfg.encoding().key().mediaType("application/x-protostream"); cfg.encoding().value().mediaType("application/x-protostream"); cacheManager.defineConfiguration("mycache", cfg.build()); Cache<Integer, Person> cache = cacheManager.getCache("mycache"); cache.put(1, new Person("John","Doe")); // Use Protobuf for keys and JSON for values Cache<Integer, byte[]> jsonValuesCache = (Cache<Integer, byte[]>) cache.getAdvancedCache().withMediaType("application/x-protostream", "application/json"); byte[] json = jsonValuesCache.get(1);
以 JSON 格式返回的值
{ "_type":"org.infinispan.sample.Person", "name":"John", "surname":"Doe" }