使用@EnableClusterAware无法注入GemFireCache的配置问题咨询
解决方案
@EnableClusterAware 本身仅负责自动适配集群拓扑、动态调整客户端连接配置,不会自动初始化GemFireCache或ClientCache类型的Bean,需要搭配**@ClientCacheApplication**注解一起使用,该注解会自动在Spring容器中注册符合要求的客户端缓存实例,满足注入需求。
如果是连接Pivotal Cloud Cache(PCC)服务场景,推荐额外搭配@EnableGemFireProperties注解,该注解会自动读取PaaS环境注入的PCC连接参数(包括服务地址、认证凭据、端口等),无需手动在@ClientCacheApplication中硬编码配置。
完整配置示例
import org.apache.geode.cache.GemFireCache; import org.apache.geode.cache.client.ClientRegionShortcut; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.gemfire.client.ClientRegionFactoryBean; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; import org.springframework.data.gemfire.config.annotation.EnableClusterAware; import org.springframework.data.gemfire.config.annotation.EnableGemFireProperties; @Configuration @EnableClusterAware @ClientCacheApplication @EnableGemFireProperties // PCC场景必加,自动加载环境中的连接配置 public class PccClientConfiguration { @Bean("clientRegion") ClientRegionFactoryBean<Object, Object> someClientRegion(GemFireCache gemfire) { ClientRegionFactoryBean<Object, Object> clientRegion = new ClientRegionFactoryBean<>(); clientRegion.setCache(gemfire); // 按需配置Region策略:PROXY仅转发请求到服务端,CACHING_PROXY会在本地缓存数据 clientRegion.setShortcut(ClientRegionShortcut.PROXY); // 填写对应PCC服务端的Region名称 clientRegion.setName("serverSideRegionName"); return clientRegion; } }
可选简化方案
如果你使用Spring Boot适配PCC场景,也可以直接使用@EnablePccClient组合注解,该注解已经内置了@EnableClusterAware、@ClientCacheApplication和PCC配置自动加载的能力,无需单独声明上述注解即可完成客户端初始化。
内容的提问来源于stack exchange,提问作者Vaidy
相关产品推荐
相关产品推荐

