Spring Boot - Beste Methode zum Starten eines Hintergrundthreads bei der Bereitstellung
Ich habe eine Spring Boot-Anwendung in Tomcat 8 implementiert. Wenn die Anwendung gestartet wird, möchte ich einen Arbeitsthread im Hintergrund starten, der Spring Autowires mit einigen Abhängigkeiten ausführt. Zur Zeit habe ich folgendes:
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class MyServer extends SpringBootServletInitializer {
public static void main(String[] args) {
log.info("Starting application");
ApplicationContext ctx = SpringApplication.run(MyServer.class, args);
Thread subscriber = new Thread(ctx.getBean(EventSubscriber.class));
log.info("Starting Subscriber Thread");
subscriber.start();
}
In meiner Docker-Testumgebung funktioniert dies einwandfrei - aber wenn ich dies auf meinem Linux-Host (Debian Jessie, Java 8) in Tomcat 8 bereitstelle, wird nie die Meldung "Starting Subscriber Thread" angezeigt (und der Thread wird nicht gestartet).