Die Annotation @ConditionalOnProperty funktioniert im Spring-Boot-Projekt nichtJava

Java-Forum
Anonymous
 Die Annotation @ConditionalOnProperty funktioniert im Spring-Boot-Projekt nicht

Post by Anonymous »

Ich möchte eine Spring Bean bedingt erstellen. Ich dachte, @ConditionalOnProperty würde diesem Zweck dienen. Ich habe es in meiner Serviceklasse verwendet, sehe aber nicht, dass die Bean erstellt wird.

Hier ist meine Bean, die bedingt erstellt werden soll

Code: Select all

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

@Scheduled(fixedDelay = INTERVAL_MS)
public void execute() {
//sysout
}
}
Ein paar Dinge, die es zu beachten gilt.

-- Unser Service lädt Eigenschaften direkt von Consul (aus Legacy-Gründen) und nicht über die Spring-Umgebung

-- Ich habe die RestTemplate-Bean (unten) gehackt, um benutzerdefinierte propertyResource in die Umgebung einzufügen. Ich wusste nicht, wie ich das machen sollte, ohne eine weitere PropertySource-Bean-Instanz zu erstellen.

Code: Select all

@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();
}
}
Wenn ich den Dienst starte, wird er gestartet. Ich habe polling.enabled is true in Consul eingerichtet. Beim Debuggen habe ich bestätigt, dass der Wert in Zeile 25 richtig eingestellt ist. Die Bean wird jedoch NICHT erstellt.
Wenn ich @ConditionalOnProperty aus der Klasse auskommentiere, wird die Bean erstellt und die geplante Methode aufgerufen.

Jede Hilfe zur Behebung dieses Problems ist sehr willkommen!!
Vielen Dank im Voraus

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post