Аннотация @Region при использовании Spring Data Gemfire

Я разрабатываю службу данных, используя Spring Data и Gemfire. Есть аннотация

@Region("<region name>")

чтобы указать, в каком регионе Gemfire будет храниться POJO.

Для этого требуется имя настроенного региона Gemfire. Мне кажется, что жесткое кодирование имени региона — плохая практика, поскольку кластер Gemfire будет управляться отдельной командой, и я считаю, что имя региона должно быть полностью настраиваемым.

Есть ли лучший способ избежать жесткого кодирования названия региона?


person Dmitry Trofimov    schedule 06.02.2014    source источник


Ответы (3)


Имя региона должно быть общим для всех процессов, которые обращаются к региону. Это аналогично имени таблицы в реляционной базе данных. В этом смысле он ничем не отличается от аннотаций JPA или Hibernate, которые объявляют имя таблицы, в которой будет храниться POJO. IIRC, используя Spring Data Repositories, если @Region отсутствует, он получит его из имени класса. Но в любом случае соответствующий регион должен существовать. Если ваше приложение является клиентом сетки GemFire, вы также должны настроить клиентский регион с тем же именем, что и соответствующий регион на сервере. Если это одноранговый узел, вы должны создать регион (либо раздел, либо реплику). Эти вещи можно сделать с конфигурацией Spring или нативной конфигурацией GemFire, но в любом случае имя общего региона должно быть известно заранее, и если оно изменится, оно должно измениться везде.

person dturanski    schedule 06.02.2014
comment
Не уверен, что это отвечает на мой вопрос. Я хотел бы иметь возможность загружать имя региона хотя бы из файла свойств. Не нравится идея жестко запрограммированного имени в исходном коде. - person Dmitry Trofimov; 07.02.2014

Не могли бы вы использовать Spring Expression Language для ввода имени региона?

Мы вводим значение из конфигурационного компонента, который сам основан на файле XML, в аннотацию @Value, например:

@Value("#{config.dataSourceConfig.dbMainUsername}")

Где «config» — это имя конфигурационного компонента.

Не уверен, что это работает со всеми аннотациями, хотя...

person Lawrence Tierney    schedule 20.02.2014
comment
У вас есть материалы для чтения по этому поводу, пожалуйста? Мне нужно избегать жесткого кодирования значения, переданного в аннотации. Tnx - person Gabe; 27.07.2016

В общем, я не думаю, что указывать имя/путь региона в аннотации @Region к объекту домена приложения обязательно является плохой практикой; это, конечно, намного более явно.

Тем не менее, я могу понять необходимость сделать такие вещи настраиваемыми, возможно, при переходе от 1 env (например, DEV) к другому (например, PROD). Таким образом, см. недавнее изменение...

SGF-261 — позволяет сохранять объект/сущность домена приложения в нескольких регионах в Кэш GemFire

А также это предложенное, будущее изменение...

SGF-262.

person John Blum    schedule 06.03.2014