Refaktorisierung für Tests - Start des EndlessConsumer in ApplicationRunner
authorKai Moritz <kai@juplo.de>
Sat, 9 Apr 2022 09:36:29 +0000 (11:36 +0200)
committerKai Moritz <kai@juplo.de>
Sun, 10 Apr 2022 20:26:39 +0000 (22:26 +0200)
* Bisher wurde der EndlessConsumer beim erzeugen der Bean gestartet
* Dies ist für das Aufsetzen von Tests ungünstig, da die erzeugte Bean
  dort nicht unbedingt direkt gestartet werden soll
* Daher wurde der Start des EndlessConsumer in einen ApplicationRunner
  ausgelagert

src/main/java/de/juplo/kafka/Application.java
src/main/java/de/juplo/kafka/ApplicationConfiguration.java

index 0069257..f227bbe 100644 (file)
@@ -1,12 +1,29 @@
 package de.juplo.kafka;
 
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 
 @SpringBootApplication
-public class Application
+@Slf4j
+public class Application implements ApplicationRunner
 {
+  @Autowired
+  EndlessConsumer endlessConsumer;
+
+
+  @Override
+  public void run(ApplicationArguments args) throws Exception
+  {
+    log.info("Starting EndlessConsumer");
+    endlessConsumer.start();
+  }
+
+
   public static void main(String[] args)
   {
     SpringApplication.run(Application.class, args);
index 6e04453..58f44fa 100644 (file)
@@ -20,16 +20,12 @@ public class ApplicationConfiguration
       KafkaConsumer<String, String> kafkaConsumer,
       ApplicationProperties properties)
   {
-    EndlessConsumer consumer =
+    return
         new EndlessConsumer(
             Executors.newFixedThreadPool(1),
             properties.getClientId(),
             properties.getTopic(),
             kafkaConsumer);
-
-    consumer.start();
-
-    return consumer;
   }
 
   @Bean(destroyMethod = "close")