Ich versuche derzeit, eine Spring Boot-Anwendung in eine externe Tomcat-Instanz zu implementieren, und stoße auf einige Fragen, wie man die Instanziierung bestimmter Dinge am besten verwaltet.Bean Lifecycle Management Spring Boot
Wie derzeit strukturiert Ich habe etwas entlang der Linien von
public class MyClass extends SpringBootServletInitializer{
@Bean
public ThreadPool pool(){
return new ThreadPool();
}
@Bean
public BackgroundThread setupInbox() {
BackgroundThread inbox = new BackgroundThread(pool());
inbox.start();
return inbox;
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyClass.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(MyClass.class, args);
}
}
wo BackgroundThread ein Thread ist, der für neue Arbeitsplätze zu einem AMQP Typ-Messaging-Warteschlange hört. Ich weiß, dass Spring einige RabbitMQ-Möglichkeiten anbietet, aber wir verwenden Rabbit nicht dafür, also hilft es nicht.
Der gesamte Zweck dieser * .war-Datei, die bereitgestellt wird, besteht darin, einige Funktionen der Leitung via Messaging verfügbar zu machen, also meine Frage ist, was der beste Weg ist, den BackgroundThread über den gesamten Lebenszyklus zu instanziieren, zu starten und dann zu zerstören Frühling? XML-Konfiguration?
Möchten Sie sich einige Spring-Kontext-Lebenszyklusereignisse anhören und Ihren Thread auf ihnen verwalten? – jahra