Аннотация @ConditionalOnProperty не работает в проекте весенней загрузкиJAVA

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

Сообщение Anonymous »

Я хочу условно создать Spring bean. Я решил, что @ConditionalOnProperty послужит этой цели. Я использовал его в своем классе обслуживания, но не вижу создаваемого компонента.

Вот мой бин, который я хочу условно создать

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

@Service
@ConditionalOnProperty(value = "polling.enabled", havingValue = "true")
public class MessageQueueService {

@Scheduled(fixedDelay = INTERVAL_MS)
public void execute() {
//sysout
}
}
несколько вещей, на которые следует обратить внимание.

- наш сервис загружает свойства непосредственно из консула (по причинам устаревшего), а не через среду Spring

-- я взломал компонент RestTemplate (ниже), чтобы добавить собственный propertyResource в среду. Я не знал, как это сделать, не создавая еще один экземпляр компонента PropertySource.

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

@Configuration
public class AppConfig {

@Autowired
ConfigurableEnvironment env;

@Bean(name = "consulProps")
public Properties properties() {
Properties consulProperties = new ConsulDriver(env.getConsulUrl()).loadProperties();
return properties;
}

@Bean
@Autowired
public RestTemplate restTemplate(@Qualifier(consulProps) Properties props) {
MutablePropertySources sources = env.getPropertySources();
sources.addFirst(pollingEnabled(props));
return new RestTemplate();
}

private MapPropertySource pollingEnabled(Properties props) {
String enabled = props.getProperty("polling.enabled"); // line 25
Map map = new HashMap();
if (StringUtils.isNotBlank(enabled)) {
map.put("polling.enabled", enabled);
}
else {
map.put("polling.enabled", "false");
}
return new MapPropertySource("polling", map);
}

@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigIn() {
return new PropertySourcesPlaceholderConfigurer();
}
}
когда я запускаю службу, она запускается. Я настроил polling.enabled true в консуле. во время отладки я подтвердил, что значение установлено правильно в строке 25. Однако bean-компонент НЕ создается.
если я закомментирую @ConditionalOnProperty из класса, bean-компонент создается и вызывается запланированный метод.

Любая помощь в исправлении этой ситуации будет очень признательна!
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/508 ... ot-project
Ответить

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

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

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

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

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