Как заставить Spring @ConditionalOnProperty проверять, присутствует ли свойство без значенияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как заставить Spring @ConditionalOnProperty проверять, присутствует ли свойство без значения

Сообщение Anonymous »

Ну, в моем собственном проекте есть специальный файл конфигурации, в нем можно установить несколько источников Redis

Код: Выделить всё

my:
redis:
connections:
- name: redis-1
address: 127.0.0.1:6379
mode: master
- name: redis-2
address: 127.0.0.1:6479
mode: slave
ofSlave: redis-1
- name: redis-3
address: 127.0.0.1:6579
mode: slave
ofSlave: redis-1

Я пытаюсь создать класс автоматической настройки, и он будет загружен при обнаружении свойства.

Код: Выделить всё

// @Configuration // controll by @EnableMyRedis
@ConditionalOnProperty("my.redis.connections")
public class MyRedisAutoConfiguration {

}
Поэтому я хочу загрузить эту конфигурацию и другие компоненты, когда мой файл application.yml содержит свойство my.redis.connections, даже если оно не имеет значения.

Дополнение:
То, что я действительно хочу, может быть выражено в этом примере: автоконфигурация и PropertyBeanDefinitionRegistrar

Код: Выделить всё

@Import(AutoConfiguration.class)
public @annotation EnableMyRedis {
}

@MyConditionalOnProperty(prefix = "my.redis.connections")
@Import(PropertyBeanDefinitionRegistrar.class)
public class AutoConfiguration {

}

public class PropertyBeanDefinitionRegistrar implements
EnvironmentAware, BeanDefinitionRegistrar {

}
Очень ясно видно их взаимосвязь;
  • Если включено, загрузите автоконфигурацию, в противном случае нет.
  • Если есть префикс свойства «my.redis.connections», загрузите PropertyBeanDefinitionRegistrar, иначе нет.
  • На этом этапе файл свойства будет действительно обработан и сгенерирован. beans.
Но я включил debug: true и обнаружил, что он не работает, PropertyResolver или Environment в методе getMatchOutcome класса OnPropertyCondition проверял только реальное свойство вместо отношения слоев
Как я могу достичь своих потребностей?

Подробнее здесь: https://stackoverflow.com/questions/767 ... esent-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»