Поскольку вы используете более удобную аннотацию @EnableEntityDefinedRegions
SDG (что рекомендуется, особенно для простых UC), то вы явно не определяете определение bean-объекта Region (например, используя классы ReplicationRegionFactoryBean
или PartitionedRegionFactoryBean
SDG) как Хуан Рамос сделал в своем ответе.
В этом случае вы можете объявить RegionConfigurer
, чтобы изменить регион "Люди", а затем применить ту же технику, которую Хуан сделал из своего ответа, чтобы предоставить CacheListener
.
Например:
@SpringBootApplication
@EnableEntityDefinedRegions(basePackageClasses = People.class)
@EnableGemfireRepositories(..)
class MySpringBootGemFireApplication {
@Bean
RegionConfigurer peopleRegionConfigurer(
CacheListener<Long, Person> peopleRegionListener) {
return new RegionConfigurer() {
@Override
public void configure(String beanName,
ClientRegionFactoryBean<Long, Person> regionFactory) {
regionFactoryBean.setCacheListeners(
new CacheListener[] { peopleRegionListener });
};
}
@Bean
CacheListenerAdapter<Long, Person> peopleRegionListener() {
return new CacheListenerAdapter<>() {
public void afterDestroy(EntryEvent<Long, Person> event) { ... }
public void afterUpdate(EntryEvent<Long, Person> event) { ... }
};
}
}
ПРИМЕЧАНИЕ: при использовании Spring Boot, GemFire Starter (org.springframework.geode:spring-gemfire-starter
), аннотация @ClientCacheApplication
определенно не требуется, поскольку SBDG автоматически конфигурирует экземпляр ClientCache
по умолчанию (см. здесь ) ,
ПРИМЕЧАНИЕ. Кроме того, если ваше приложение GemfireRepositories
находится в подпакете ниже основного класса приложения Spring Boot, вам также не нужно явно объявлять @EnableGemfireRepositories
, поскольку SBDG автоматически конфигурирует инфраструктуру хранилища SD для вас. (см. здесь ).
Для получения дополнительной информации о конфигураторах SDG см. здесь .
Надеюсь, это поможет.