Spring-Boot-Configuration-процессор не может найти расширенные поля класса - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть 2 загрузочных проекта Spring, которые используют общую библиотеку. Давайте назовем их api1 и api2. Они оба назвали конфигурацию очереди в своих файлах начальной загрузки yml с небольшой разницей:

api1 yml:

queues:
  queueOne:
    queue-name: queue-one
    routing-key: queue-one
  queueTwo:
    queue-name: queue-two
    routing-key: queue-two

api2 yml:

queues:
  queueOne:
    queue-name: queue-one
    routing-key: queue-one
    concurrency: 5
  queueTwo:
    queue-name: queue-two
    routing-key: queue-two
    concurrency: 5

В общей библиотекеУ меня есть следующий класс:

/**
 * Queue configuration bean class
 * **/
@Data
public class QueueConfiguration
{
    @NotBlank
    private String queueName;
    @NotBlank
    private String routingKey;
}

Также в общем классе:

@Data
public class ListenerQueueConfiguration extends QueueConfiguration
{
    @Max(value = 5, message = "Max concurrency is 5.")
    @Min(value = 1, message = "Min concurrency is 1.")
    private Integer concurrency = 1;
}

Оба имеют свои соответствующие классы @Configuration:

api1:

@Configuration
@ConfigurationProperties(prefix = "queues")
@Data
AppOneConfigurationProperties
{
  @NotNull
  private QueueConfiguration queueOne;

  @NotNull
  private QueueConfiguration queueTwo;
}

api2:

@Configuration
@ConfigurationProperties(prefix = "queues")
@Data
AppTwoConfigurationProperties
{
  @NotNull
  private ListenerQueueConfiguration queueOne;

  @NotNull
  private ListenerQueueConfiguration queueTwo;
}

При запуске оба приложения не имеют проблем с чтением этих значений, однако процессор конфигурации весенней загрузки, который разрешает поля для среды IDE (затмение STS), выделяетунаследованные поля queueName и routingKey в yml как неизвестные свойства для app2. Кажется, он не может читать наследуемые свойства. Могу ли я добавить что-нибудь в виде аннотации или что-то, что поможет этому валидатору кода IDE распознать, что это допустимые поля? Я действительно не хочу дублировать поля в этих классах. *

...