Nel mio post precedente “Introduzione a Spring Boot”, abbiamo discusso dei concetti di base di Spring Boot. Ora parleremo dei “Principali componenti di Spring Boot” e di “Come funziona Spring Boot sotto il cofano”.
Componenti chiave del framework Spring Boot
Il framework Spring Boot ha principalmente quattro componenti principali.
- Avviatori di Spring Boot
- AutoConfiguratore di Spring Boot
- CLI di Spring Boot
- Attuatore di Spring Boot
NOTA:- Oltre a questi quattro componenti principali, ci sono altri due componenti di Spring Boot:
- Inizializzatore di Spring
- IDE di Spring Boot
Per avviare rapidamente nuovi progetti Spring Boot, possiamo utilizzare l’interfaccia web “Spring Initializr”. URL di Spring Initializr: https://start.spring.io. Abbiamo molti IDE di Spring Boot come Eclipse IDE, IntelliJ IDEA, Suite Spring STS, ecc. Discuteremo di questi due componenti nei prossimi post. Ora discuteremo dettagliatamente questi quattro componenti di Spring Boot uno per uno.
Spring Boot Starter
I Spring Boot Starters sono una delle principali caratteristiche o componenti del framework Spring Boot. La responsabilità principale di Spring Boot Starter è combinare un gruppo di dipendenze comuni o correlate in singole dipendenze. Esploreremo questa affermazione in dettaglio con un esempio. Ad esempio, vorremmo sviluppare un’applicazione Spring Web con Tomcat WebServer. Allora è necessario aggiungere le seguenti dipendenze minime nel file pom.xml di Maven o nel file build.gradle di Gradle
- File JAR principale di Spring (spring-core-xx.jar)
- File JAR di Spring Web (spring-web-xx.jar)
- File JAR di Spring Web MVC (spring-webmvc-xx.jar)
- File JAR di Servlet (servlet-xx.jar)
Se vogliamo aggiungere alcune funzionalità di database, allora è necessario aggiungere JAR correlati al database come il file JAR di Spring JDBC, i file JAR di Spring ORM, il file JAR di Spring Transaction, ecc.
- File JAR di Spring JDBC (spring-jdbc-xx.jar)
- File JAR di Spring ORM (spring-orm-xx.jar)
- File JAR di Spring Transaction (spring-transaction-xx.jar)
Abbiamo bisogno di definire molte dipendenze nei nostri file di build. È un compito molto tedioso e complicato per uno sviluppatore. Inoltre, aumenta le dimensioni dei file di build. Qual è la soluzione per evitare questa mole di definizioni di dipendenze nei nostri file di build? La soluzione è il componente Spring Boot Starter. Il componente Spring Boot Starter combina tutti i file jar correlati in un unico file jar in modo che possiamo aggiungere solo la dipendenza del file jar ai nostri file di build. Invece di aggiungere i precedenti 4 file jar al nostro file di build, è sufficiente aggiungere un unico file jar: il file jar “spring-boot-starter-web”. Quando aggiungiamo la dipendenza del file jar “spring-boot-starter-web” al nostro file di build, il framework Spring Boot scaricherà automaticamente tutti i file jar richiesti e li aggiungerà al classpath del nostro progetto.
Allo stesso modo, il file jar “spring-boot-starter-logging” carica tutte le sue dipendenze come i file jar “jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j, logback-classic” nel classpath del nostro progetto.
Principali vantaggi di Spring Boot Starter
- Spring Boot Starter riduce la definizione di molte dipendenze semplificando le dipendenze di build del progetto.
- Spring Boot Starter semplifica le dipendenze di build del progetto.
Questo è tutto riguardo al componente Spring Boot Starter. Discuteremo ulteriori dettagli con alcuni esempi di Spring Boot nei prossimi post.
Spring Boot AutoConfigurator
Un altro componente chiave importante del framework Spring Boot è lo Spring Boot AutoConfigurator. La maggior parte delle opinioni critiche sulla piattaforma Spring IO (Spring Framework) afferma che “Sviluppare un’applicazione basata su Spring richiede molta configurazione (sia configurazione XML che configurazione tramite annotazioni). Quindi, come risolvere questo problema? La soluzione a questo problema è lo Spring Boot AutoConfigurator. La responsabilità principale dello Spring Boot AutoConfigurator è ridurre la configurazione di Spring. Se sviluppiamo applicazioni Spring in Spring Boot, non è necessario definire una singola configurazione XML e quasi nessuna o minima configurazione tramite annotazioni. Il componente Spring Boot AutoConfigurator si occuperà di fornire queste informazioni. Ad esempio, se vogliamo dichiarare un’applicazione Spring MVC usando la piattaforma Spring IO, dobbiamo definire molte configurazioni XML come viste, risolutori di viste, ecc. Ma se usiamo il framework Spring Boot, non è necessario definire queste configurazioni XML. Lo Spring Boot AutoConfigurator se ne occuperà. Se utilizziamo il file JAR “spring-boot-starter-web” nel nostro file di build del progetto, lo Spring Boot AutoConfigurator risolverà automaticamente viste, risolutori di viste, ecc. Inoltre, Spring Boot riduce la definizione della configurazione tramite annotazioni. Se utilizziamo l’annotazione @SpringBootApplication a livello di classe, lo Spring Boot AutoConfigurator aggiungerà automaticamente tutte le annotazioni richieste al bytecode della classe Java. Se consultiamo la documentazione di Spring Boot, possiamo trovare la seguente definizione per @SpringBootApplication.
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
Quindi, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. Questo riguarda il componente Spring Boot AutoConfigurate. Discuteremo ulteriori dettagli con alcuni esempi di Spring Boot nei prossimi post. NOTA:-
- In parole semplici, lo Starter di Spring Boot riduce le dipendenze della build e l’AutoConfiguratore di Spring Boot riduce la configurazione di Spring.
- Come abbiamo discusso, lo Starter di Spring Boot dipende dall’AutoConfiguratore di Spring Boot, lo Starter di Spring Boot attiva automaticamente l’AutoConfiguratore di Spring Boot.
Spring Boot CLI
Spring Boot CLI (Interfaccia a riga di comando) è un software Spring Boot per eseguire e testare applicazioni Spring Boot dall’invito dei comandi. Quando eseguiamo applicazioni Spring Boot usando CLI, utilizza internamente gli Starter di Spring Boot e i componenti di Spring Boot AutoConfigurate per risolvere tutte le dipendenze ed eseguire l’applicazione. Possiamo eseguire anche applicazioni web Spring con semplici comandi CLI di Spring Boot. Spring Boot CLI ha introdotto un nuovo comando “spring” per eseguire script Groovy dall’invito dei comandi. Esempio di comando spring:
spring run HelloWorld.groovy
Qui HelloWorld.groovy è un file di script Groovy. Come i file sorgente di Java hanno l’estensione *.java, i file di script Groovy hanno l’estensione *.groovy. Il comando “spring” esegue HelloWorld.groovy e produce l’output. Il componente Spring Boot CLI richiede molte fasi come l’installazione di CLI, la configurazione di CLI, lo sviluppo di un’applicazione Spring Boot semplice e il test. Dedicheremo un altro post per discutere dettagliatamente con alcuni esempi di Spring Boot CLI. Si prega di fare riferimento al mio prossimo post su Spring Boot CLI.
Spring Boot Actuator
I componenti di Spring Boot Actuator offrono molte funzionalità, ma due delle principali sono
- Fornire Management EndPoints alle applicazioni Spring Boot.
- Metriche delle applicazioni Spring Boot.
Quando eseguiamo la nostra applicazione web Spring Boot utilizzando CLI, Spring Boot Actuator fornisce automaticamente l’hostname come “localhost” e il numero di porta predefinito come “8080”. Possiamo accedere a questa applicazione utilizzando il punto finale “https://localhost:8080/”. In realtà utilizziamo i metodi di richiesta HTTP come GET e POST per rappresentare i Management EndPoints utilizzando Spring Boot Actuator. Discuteremo ulteriori dettagli su Spring Boot Actuator nei prossimi post.
Interni del framework Spring Boot
È sempre consigliato capire come il framework Spring Boot riduce le dipendenze di build, la configurazione di Spring, ecc. Come funziona Spring Boot sotto il cofano. Se sei familiare con il linguaggio di programmazione Groovy, allora conosci la maggior parte delle cose. In Groovy, non è necessario aggiungere alcuni import e non è necessario aggiungere alcune dipendenze al progetto Groovy. Quando compiliamo gli script Groovy usando il compilatore Groovy (groovyc), verranno automaticamente aggiunte tutte le dichiarazioni di importazione predefinite e poi verranno compilati. Allo stesso modo, il linguaggio di programmazione Groovy contiene un risolutore di dipendenze JAR per risolvere e aggiungere tutti i file JAR necessari al classpath del progetto Groovy. Il framework Spring Boot utilizza internamente Groovy per aggiungere alcune impostazioni predefinite come le dichiarazioni di importazione predefinite, il metodo main() dell’applicazione, ecc. Quando eseguiamo gli script Groovy dalla riga di comando del prompt dei comandi, viene utilizzato questo metodo main() per eseguire l’applicazione Spring Boot.
Grape
Il “Grape” è un motore di risoluzione delle dipendenze incorporate. Grape è un gestore di dipendenze JAR incorporato in Groovy. Grape ci consente di aggiungere rapidamente dipendenze dai repository Maven al classpath del nostro progetto per ridurre le definizioni dei file di build. Il modello di programmazione di Spring Boot è principalmente ispirato al modello di programmazione di Groovy. Il framework Spring Boot dipende internamente da due componenti principali: Groovy e Grape. Puoi consultare la documentazione di Grape su https://docs.groovy-lang.org/latest/html/documentation/grape.html per ulteriori dettagli. Questo è tutto riguardo ai componenti interni di Spring. Discuteremo dettagliatamente di questi componenti con alcuni esempi di Spring Boot nei prossimi post. Se hai domande, lasciami un commento.