spring-data-gemfire 2.2.0版本ClientGemfirePropertiesConfigurer Bean重复定义问题咨询
根因
该问题是Spring Data GemFire 2.2.0.RELEASE版本的固有继承冲突导致:EmbeddedServiceConfigurationSupport类本身会自动注册ClientGemFirePropertiesConfigurer类型的Bean,而@EnableSSL注解加载的SSLConfiguration继承了该类,最终触发Spring上下文同Bean重复注册的报错。
可用解决方案(均无需开启全局Bean覆盖)
方案1:过滤框架默认注册的重复Bean
在启动类或核心配置类上通过@ComponentScan的排除规则,过滤掉框架自动扫描注册的默认ClientGemFirePropertiesConfigurer实例,仅保留SSL配置继承生成的实例:
@ComponentScan(excludeFilters = @ComponentScan.Filter( type = FilterType.ASSIGNABLE_TYPE, classes = org.springframework.data.gemfire.config.annotation.ClientGemFirePropertiesConfigurer.class ))
方案2:自定义Bean名称规避冲突
重写SSLConfiguration中的Bean注册逻辑,显式指定自定义的Bean名称,和框架默认Bean名称区分开:
@Configuration public class CustomSslConfig extends SSLConfiguration { @Bean("customClientGemfirePropertiesConfigurer") @Override public ClientGemFirePropertiesConfigurer clientGemFirePropertiesConfigurer() { return super.clientGemFirePropertiesConfigurer(); } }
开启SSL时指定使用自定义配置类即可:
@EnableSSL(configuration = CustomSslConfig.class)
方案3:升级依赖版本
Spring Data GemFire 2.2.1.RELEASE及以上版本已修复该重复注册问题,若业务允许升级依赖,直接将spring-data-gemfire版本调整至2.2.1.RELEASE或更高即可原生解决冲突。
提示:升级前需完成依赖兼容性校验,避免影响其他现有功能。
内容的提问来源于stack exchange,提问作者user3498653
相关产品推荐
相关产品推荐

