Добавление дополнительных советов с указанным выше классом конфигурации GemFire / Spring JavaConfig выше.
При условии, что вы используете Spring Data Kay
(подразумевается использование Spring Boot 2.0.x
родительский POM, то есть org.springframework.boot:spring-boot-dependencies
; см. здесь ), тогда вы можете использовать Spring Data GemFire (относительно) новую и удобную Модель конфигурации на основе аннотаций .
Таким образом, ваш GemfireConfiguration
класс, приведенный выше, станет ...
@PeerCacheApplication
@EnableGemfireRepositories(basePackages = "com.gemfire.demo")
class GemfireConfiguration {
@Bean(name="employee")
LocalRegionFactoryBean<String, Employee> getEmployee(GemFireCache cache) {
LocalRegionFactoryBean<String, Employee> employeeRegion =
new LocalRegionFactoryBean<String, Employee>();
employeeRegion.setCache(cache);
employeeRegion.setClose(false);
employeeRegion.setDataPolicy(DataPolicy.PRELOADED);
return employeeRegion;
}
}
Несколько вещей, о которых следует помнить:
@PeerCacheApplication
мета-аннотируется @Configuration
, поэтому вам не нужна явная аннотация Spring @Configuration
для класса конфигурации.
@PeerCacheApplication
позволяет настроить журнал GemFire-уровень (вместе с другой конфигурацией ведения журнала) с использованием атрибута аннотации logLevel
.Аналогично, вы можете установить уровень журнала, используя соответствующее свойство spring.data.gemfire.cache.log-level
в файле Spring Boot application.properties
(см. здесь ).Существует множество других атрибутов и соответствующих свойств (например, name
), которые можно использовать для настройки и настройки другой конфигурации.
Хотя имена пакетов на основе строк поддерживаются в @EnableGemfireRepositories
и аналогичныханнотации, мы обычно предпочитаем и рекомендуем пользователям использовать типобезопасный вариант basePacakgeClasses
.Вам нужно ссылаться только на один тип из каждого пакета верхнего уровня, в котором хранятся репозитории вашего приложения.
Явная аннотация @Autowired
не требуется в ваших определениях компонентов.Вам не нужно явно вводить EmployeeRepository
в классе конфигурации для его инициализации;просто внедрите его в класс @Service
, где он будет использоваться.
Для удобства имя ("employee") определения компонента Region в вашем LOCAL "работнике" Region,также будет использоваться в качестве имени региона, поэтому employeeRegion.setName("employee")
не требуется.
Не следует объединять LocalRegionFactoryBean.setPersistent(:boolean)
с LocalRegionFactoryBean.setDataPolicy(:DataPolicy)
, поскольку DataPolicy будет иметь приоритет.
Хотя @ComponentScan
вполне приемлемо и даже удобно в разработке, я обычно не предпочитаю и не рекомендую пользователям использовать компонентное сканирование.Обычно всегда лучше быть явным.
Как указано в комментариях, вы должны удалить <relativePath/>
из определения своего родителя в файле POM приложения Maven.
Последнее замечание по состоянию на этот пост: Spring Boot 2.0.8.RELEASE
- это последняя версия.
Что касается проблем с classpath, если выЕсли вы используете Maven правильно, то Maven должен позаботиться о правильных переходных зависимостях.
Вы можете обратиться ко многим примерам, которые у меня есть в этом репо , для дальнейшего разъяснения.
Надеюсь, это поможет!