Как добавить ComponentScan.Filter в @EnableEntityDefinedRegion - PullRequest
0 голосов
/ 18 июня 2020

Когда я добавил includeFilter к @EnableEntityDefinedRegion, он по-прежнему сканировал весь пакет сущностей и создавал все компоненты Region. Как отсканировать указанный c региональный класс? Например, только область «Адрес».

package org.test.entity
@Getter
@Setter
@Region("Address")
public class GfAddress implements Serializable

package org.test.entity
@Getter
@Setter
@Region("CreditCard")
public class GfCreditCard implements Serializable

package org.test.package
public interface IAddressRepository extends GemfireRepository<GfAddress, String>

package org.test.package
public interface ICreditCardRepository extends GemfireRepository<GfCreditCard , String>

@Service
@ClientCacheApplication
@EnableGemfireRepositories(basePackages = IAddressRepository.class, includeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes=AddressRepository.class))
@EnableEntityDefinedRegion(basePackages = GfAddress.class, includeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern="GfAddress*"))
public class AddressDataAccess

Когда я распечатываю все загруженные bean-компоненты, я обнаружил, что создаются следующие bean-компоненты.

  1. Address
  2. CreditCard
  3. IAddressRepository
  4. AddressDataAccess

Версия

  1. GemFire: 9.8.6
  2. весна -data-gemfire: 2.1.0
  3. Весенняя загрузка: 2.1.0

1 Ответ

0 голосов
/ 23 июня 2020

Приносим извинения за задержку.

Во-первых, взгляните на заявку SDG JIRA, которую я подал, DATAGEODE-352 - «EnableEntityDefinedRegions.includeFilters ненадлежащим образом переопределяются фреймворком, включающим фильтры» .

В этом тикете я описываю пару обходных путей для этой ошибки (!) В комментариях, начиная с здесь .

Я также буду осторожен с вашим РЕГЕКС. Я не эксперт по регулярным выражениям , но я уверен, что «GfAddress*» не будет должным образом соответствовать типу объекта приложения, который вы ищете и пытаетесь сопоставить, даже когда вы выбираете новые биты SDG, решающие проблему Я подал.

Я создал аналогичный тест, используя REGEX, чтобы проверить решение проблемы, здесь . Это REGEX, который я указал . Использование "Programmer*" не сработало, как я и подозревал! Это потому, что REGEX недействителен и не соответствует FQCN, используемому в Spring RegexPatternTypeFilter.

Технически, было бы лучше быть немного более конкретным c о сопоставлении вашего типа и использовать вместо этого используйте «ASSIGNABLE_TYPE» TypeFilter, как демонстрирует этот тест .

Наконец, в то время как SDG 2.1.x совместим с GemFire ​​9.8.x, SD [G] Lovelace или 2.1.x (например, 2.1.18.RELEASE), официально основан на VMware GemFire ​​9.5.x ( в настоящее время 9.5.4) и только «поддерживает».

SDG 2.2.x - официально основан на VMware GemFire ​​9.8.x и "поддерживает" ( в настоящее время 9.8.8 ).

Вы можете ознакомиться с новой SDG версией Матрица совместимости для более подробной информации.

Если у вас есть дополнительные вопросы, напишите здесь или в DATAGEODE-352 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...