Schlüsselkomponenten und Internals des Spring Boot Frameworks
Nun werden wir besprechen, was die Hauptkomponenten von Spring Boot sind und wie Spring Boot intern funktioniert.
Schlüsselkomponenten des Spring Boot Frameworks
Das Spring Boot Framework hat hauptsächlich vier Hauptkomponenten.
- Spring Boot Starters
- Spring Boot AutoConfigurator
- Spring Boot CLI
- Spring Boot Actuator
HINWEIS: Zusätzlich zu diesen vier Hauptkomponenten gibt es zwei weitere Spring Boot Komponenten:
- Spring Initializr
- Spring Boot IDEs
Um neue Spring Boot Projekte schnell zu starten, können wir die „Spring Initializr“ Web-Schnittstelle nutzen. Spring Initializr URL: https://start.spring.io. Wir haben viele Spring Boot IDEs wie Eclipse IDE, IntelliJ IDEA, Spring STS Suite usw.
Spring Boot Starter
Spring Boot Starters ist eine der wichtigsten Schlüsselkomponenten des Spring Boot Frameworks. Die Hauptverantwortung von Spring Boot Starter ist es, eine Gruppe von gemeinsamen oder verwandten Abhängigkeiten in einzelne Abhängigkeiten zu kombinieren. Wir werden diese Aussage anhand eines Beispiels im Detail untersuchen. Wenn wir beispielsweise eine Spring WebAnwendung mit Tomcat WebServer entwickeln möchten, dann müssen wir die folgenden minimalen Jar-Abhängigkeiten in die pom.xml Datei von Maven oder in die build.gradle Datei von Gradle hinzufügen
- Spring core Jar-Datei (spring-core-xx.jar)
- Spring Web Jar-Datei (spring-web-xx.jar)
- Spring Web MVC Jar-Datei (spring-webmvc-xx.jar)
- Servlet Jar-Datei (servlet-xx.jar)
Wenn wir etwas mit Datenbanken hinzufügen möchten, dann müssen wir datenbankbezogene Jars wie Spring JDBC Jar-Datei, Spring ORM Jar-Dateien, Spring Transaction Jar-Datei usw. hinzufügen.
- Spring JDBC Jar-Datei (spring-jdbc-xx.jar)
- Spring ORM Jar-Datei (spring-orm-xx.jar)
- Spring Transaction Jar-Datei (spring-transaction-xx.jar)
Die Spring Boot Starter Komponente kombiniert alle verwandten Jars in eine einzelne Jar-Datei, so dass wir nur eine Jar-Datei-Abhängigkeit zu unseren Build-Dateien hinzufügen müssen. Anstatt die oben genannten Jar-Dateien zu unseren Build-Dateien hinzuzufügen, müssen wir nur eine einzige Jar-Datei hinzufügen: die „spring-boot-starter-web“ Jar-Datei. Wenn wir die „spring-boot-starter-web“ Jar-Datei-Abhängigkeit zu unserer Build-Datei hinzufügen, lädt das Spring Boot Framework automatisch alle erforderlichen Jars herunter und fügt sie dem Klassenpfad unseres Projekts hinzu.
Spring Boot AutoConfigurator
Ein weiterer wichtiger Bestandteil des Spring Boot Frameworks ist der Spring Boot AutoConfigurator. Die Hauptaufgabe des Spring Boot AutoConfigurators ist es, die Spring Konfiguration zu reduzieren. Wenn wir Spring-Anwendungen in Spring Boot entwickeln, dann brauchen wir keine einzelne XML-Konfiguration zu definieren und fast keine oder nur minimale Annotation-Konfiguration. Die Spring Boot AutoConfigurator Komponente kümmert sich um die Bereitstellung dieser Informationen. Wenn wir „spring-boot-starter-web“ Jar-Datei in unserer Projekt-Build-Datei verwenden, dann wird der Spring Boot AutoConfigurator Ansichten, Ansichtslöser usw. automatisch auflösen. Und auch Spring Boot reduziert das Definieren von Annotation-Konfiguration. Wenn wir die @SpringBootApplication Annotation auf Klassenebene verwenden, wird der Spring Boot AutoConfigurator automatisch alle erforderlichen Annotationen zum Java-Klassenbytecode hinzufügen.
Wenn wir die Spring Boot Dokumentation durchgehen, finden wir die folgende Definition für @SpringBootApplication.
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
Das heißt, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiguration. Das ist alles zum Thema Spring Boot AutoConfigurator Komponente. Wir werden in kommenden Beiträgen einige weitere Details mit einigen Spring Boot Beispielen besprechen.
HINWEIS:
- Mit einfachen Worten, Spring Boot Starter reduziert die Build-Abhängigkeiten und der Spring Boot AutoConfigurator reduziert die Spring Konfiguration.
- Wie wir besprochen haben, hat Spring Boot Starter eine Abhängigkeit von Spring Boot AutoConfigurator, Spring Boot Starter löst automatisch Spring Boot AutoConfigurator aus.
Spring Boot CLI
Spring Boot CLI (Command Line Interface) ist eine Spring Boot Software, um Spring Boot Anwendungen über die Befehlszeile auszuführen und zu testen. Wenn wir Spring Boot Anwendungen mit CLI ausführen, verwendet es intern Spring Boot Starter und Spring Boot AutoConfigurator Komponenten, um alle Abhängigkeiten aufzulösen und die Anwendung auszuführen. Wir können sogar Spring Web-Anwendungen mit einfachen Spring Boot CLI-Befehlen ausführen. Spring Boot CLI hat einen neuen „spring“ Befehl eingeführt, um Groovy-Skripte von der Befehlszeile aus auszuführen. Beispiel für den spring Befehl:
spring run HelloWorld.groovy
Hier ist HelloWorld.groovy ein Groovy-Skriptdateiname. Wie Java-Quelldateinamen die Erweiterung *.java haben, haben Groovy-Skriptdateien die Erweiterung *.groovy. Der „spring“ Befehl führt HelloWorld.groovy aus und erzeugt Ausgabe. Die Spring Boot CLI-Komponente erfordert viele Schritte wie CLI-Installation, CLI-Einrichtung, Entwicklung einer einfachen Spring Boot Anwendung und deren Test. Daher widmen wir einen weiteren Beitrag, um dies im Detail mit einigen Spring Boot Beispielen zu besprechen. Bitte beachten Sie meinen nächsten Beitrag über Spring Boot CLI.
Actuator
Spring Boot Actuator-Komponenten bieten viele Funktionen, aber zwei Hauptfunktionen sind: Bereitstellung von Management-Endpunkten für Spring Boot Anwendungen und Metriken von Spring Boot Anwendungen.
Wenn wir unsere Spring Boot Webanwendung mit CLI ausführen, stellt Spring Boot Actuator automatisch den Hostnamen als „localhost“ und die Standardportnummer als „8080“ bereit. Wir können auf diese Anwendung mit dem Endpunkt „https://localhost:8080/“ zugreifen. Tatsächlich verwenden wir HTTP-Anfragemethoden wie GET und POST, um Management-Endpunkte mit Spring Boot Actuator darzustellen. Wir werden in kommenden Beiträgen einige weitere Details über Spring Boot Actuator besprechen.
Internals
Es wird immer empfohlen zu verstehen, wie das Spring Boot Framework die Build-Abhängigkeiten, Spring Konfiguration usw. reduziert. Wie Spring Boot intern funktioniert. Wenn Sie mit der Groovy-Programmiersprache vertraut sind, dann kennen Sie den Großteil davon. In Groovy müssen wir einige Importe nicht hinzufügen und keine Abhängigkeiten zum Groovy-Projekt hinzufügen. Wenn wir Groovy-Skripte mit dem Groovy-Compiler (groovyc) kompilieren, fügt er automatisch alle Standardimportanweisungen hinzu und kompiliert sie. Auf die gleiche Weise enthält die Groovy-Programmiersprache einen JAR-Dependency-Resolver, um alle erforderlichen Jar-Dateien zum Klassenpfad des Groovy-Projekts aufzulösen und hinzuzufügen. Das Spring Boot Framework verwendet intern Groovy, um einige Standards wie Standardimportanweisungen, die main()-Methode der Anwendung usw. hinzuzufügen. Wenn wir Groovy-Skripte vom CLI-Befehlszeilenprompt ausführen, verwendet es diese main()-Methode, um die Spring Boot Anwendung auszuführen.
Grape ist ein eingebetteter Dependency Resolution-Motor. Grape ist ein in Groovy eingebetteter JAR-Dependency-Manager. Grape ermöglicht es uns, schnellMaven-Repository-Abhängigkeiten zu unserem Projekt-Klassenpfad hinzuzufügen, um die Definitionen in Build-Dateien zu reduzieren. Das Programmiermodell des Spring Boot Frameworks ist hauptsächlich vom Groovy-Programmiermodell inspiriert. Das Spring Boot Framework hängt intern von diesen zwei Hauptkomponenten ab: Groovy und Grape.
Sie können die Grape-Dokumentation unter https://docs.groovy-lang.org/latest/html/documentation/grape.html für weitere Details einsehen. Das ist alles zu den Komponenten und Internals von Spring. Wir werden diese Komponenten in kommenden Beiträgen detailliert mit einigen Spring Boot Beispielen besprechen.