Yapılacak en basit şey, SpringApplication.run()
döndüğünde mesajı göndermektir. Bu yöntem Tomcat (veya desteklenen diğer tümleşik kapsayıcı) tam olarak başlatılıncaya ve yapılandırılmış bağlantı noktalarına (dinleyicilere) dinlenene kadar geri dönmez. Bununla birlikte, bu basit olsa da, ana konfigürasyon sınıfınızın ve uygulamanızın çalışma zamanı mantığının bazılarının endişelerini karıştırması nedeniyle çok düzgün bir yaklaşım değildir. Bu bir SpringApplicationRunListener
kullanabilirsiniz. Tomcat tamamen başlatılana ve yapılandırılmış bağlantı noktasını dinleyene kadar finished()
çağrılmaz.
Çalıştırıcınızı listeleyen src/main/resources/META-INF/spring.factories
adlı bir dosya oluşturun. Örneğin:
org.springframework.boot.SpringApplicationRunListener=com.example.MyRunListener
gerekli yapıcı ile çalıştırmak dinleyici oluşturun ve SpringApplicationRunListener
uygulamak. Örneğin: kabul edilen yanıt belirtildiği gibi
public class MyApplicationListener implements ApplicationListener<ApplicationReadyEvent>, Ordered {
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
//do stuff now that application is ready
}
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}
Ayrıca, bir oluşturabilirsiniz:
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
public class MyRunListener implements SpringApplicationRunListener {
public MyRunListener(SpringApplication application, String[] args) { }
@Override
public void started() { }
@Override
public void environmentPrepared(ConfigurableEnvironment environment) { }
@Override
public void contextPrepared(ConfigurableApplicationContext context) { }
@Override
public void contextLoaded(ConfigurableApplicationContext context) { }
@Override
public void finished(ConfigurableApplicationContext context, Throwable exception) {
// Send message; Tomcat is running and listening on the configured port(s)
}
}
aşağıdaki özelliği eklendi belirli bir profile altında çalıştırmak için bu dinleyici gerekli : //stackoverflow.com/a/4747639/283084? Ek olarak, uygulamanızı bir LB'nin arkasına saklayabilir ve LB, '/ health' isteğinin HTTP TAMAMINI (200) döndürmesine kadar uygulamanızı havuza almaz. – harpun