6.3. 注入远程缓存
设置 CDI Bean 以注入远程缓存。
流程
创建缓存限定器注解。
@Remote("mygreetingcache") 1 @Qualifier @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RemoteGreetingCache { 2 }
将
@RemoteGreetingCache
限定符添加到您的缓存注入点。public class GreetingService { @Inject @RemoteGreetingCache private RemoteCache<String, String> cache; public String greet(String user) { String cachedValue = cache.get(user); if (cachedValue == null) { cachedValue = "Hello " + user; cache.put(user, cachedValue); } return cachedValue; } }
注入远程缓存的提示
您可以注入远程缓存,而无需使用限定符。
... @Inject @Remote("greetingCache") private RemoteCache<String, String> cache;
如果您有多个数据中心集群,您可以为集群创建单独的远程缓存管理器制作者。
... import javax.enterprise.context.ApplicationScoped; public class Config { @RemoteGreetingCache @Produces @ApplicationScoped 1 public ConfigurationBuilder builder = new ConfigurationBuilder(); 2 builder.addServer().host("localhost").port(11222); return new RemoteCacheManager(builder.build()); } }