Nach dem Start des SpringBoot-Projekts gibt es fünf Möglichkeiten, Methoden auszuführen:
1. Implementieren Sie die CommandLineRunner-Schnittstelle
Nach der Initialisierung des Projekts wird die Methode aufgerufen und der Dienst bereitgestellt.
@Component
public class StartInit2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner====================");
}
}
2. Implementieren Sie die ApplicationRunner-Schnittstelle
Identisch mit CommandLineRunner. Lediglich das Format der Parameterübergabe ist unterschiedlich. CommandLineRunner: keine Einschränkungen; ApplicationRunner: Schlüsselwert
@Component
public class StartInit3 implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
System.out.println("ApplicationRunner=================");
}
}
3. Implementieren Sie die ApplicationListener-Schnittstelle
Nach der Initialisierung des Projekts wird die Methode aufgerufen und der Dienst bereitgestellt. Achten Sie auf die überwachten Ereignisse, normalerweise ApplicationStartedEvent oder ApplicationReadyEvent. Andere Ereignisse dürfen möglicherweise nicht in die Bean eingefügt werden.
@Component
public class StartInit4 implements ApplicationListener<ApplicationStartedEvent> {
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
System.out.println("ApplicationListener================ApplicationStartedEvent");
}
}
- Wenn das Ereignis abgehört wird
ApplicationStartedEvent
, wird ApplicationListener definitiv vor CommandLineRunner und ApplicationRunner ausgeführt. - Wenn das Ereignis abgehört wird
ApplicationReadyEvent
, wird ApplicationListener definitiv nach CommandLineRunner und ApplicationRunner ausgeführt.
Reihenfolge:
Standardmäßig wird ApplicationRunner
zuerst ausgeführt. Wenn beide Parteien angeben @Order
, @Order
erfolgt die Ausführung in der Reihenfolge der Größe, wobei die kleineren zuerst ausgeführt werden.
Prinzip:
- Die run-Methode von SpringApplication führt die afterRefresh-Methode aus.
- Die Methode afterRefresh führt die Methode callRunners aus.
- Die Methode callRunners ruft alle Methoden auf, die die Schnittstellen ApplicationRunner und CommondLineRunner implementieren. Die Methode callRunners ruft alle Methoden auf, die die Schnittstellen ApplicationRunner und CommondLineRunner implementieren.
4. @PostConstruct-Annotation
Diese Methode wird während der Projektinitialisierung aufgerufen. Wenn die Ausführung der Geschäftslogik zeitaufwändig ist, kann der Projektstart fehlschlagen.
@Component
public class StartInit {
@PostConstruct
public void init() {
System.out.println("@PostConstruct===============================");
}
}
5. Implementieren Sie die InitializingBean-Schnittstelle
Diese Methode wird beim Start des Projekts aufgerufen
@Component
public class StartInit6 implements InitializingBean {
@Override
public void afterPropertiesSet() {
System.out.println("InitializingBean====================");
}
}