Domande Spring Boot Flashcards
- Cos’è Spring Boot e quali sono i suoi vantaggi rispetto a Spring Framework?
Spring Boot è un framework progetto della Spring Foundation che rende facile creare applicazioni. La sua filosofia è di fornire default ragionevoli e configurazioni pronte all’uso per permettere agli sviluppatori di iniziare rapidamente a lavorare, riducendo la complessità della configurazione manuale..
Vantaggi:
Configurazione Automatica
Spring Boot: Fornisce configurazione automatica (auto-configuration)
Embedded Server
Include server web incorporati come Tomcat, Jetty e Undertow, che consentono di eseguire l’applicazione come una singola unità (JAR o WAR) senza necessità di deploy su un server esterno.
Facile Gestione delle Dipendenze
Spring Boot: Utilizza starter POMs che aggregano le dipendenze comuni in un unico POM, semplificando la gestione delle dipendenze.
Microservizi
Spring Boot: Progettato per facilitare lo sviluppo di microservizi, con supporto integrato per configurazioni di microservizi e strumenti correlati.
- Come si configura un’applicazione Spring Boot?
Creazione del Progetto Spring Boot
Spring Initializr: Vai su Spring Initializr e seleziona le dipendenze e le configurazioni desiderate per il tuo progetto, quindi genera e scarica il progetto.
Definizione delle Dipendenze
**Apri il file pom.xml **(per progetti Maven)
Definizione dei Componenti
Crea i componenti della tua applicazione come controller, service, repository, ecc., utilizzando annotazioni come @RestController, @Service, @Repository, ecc.
Configurazione del Server
Spring Boot fornisce un server web incorporato (come Tomcat per impostazione predefinita) che può essere configurato tramite il file application.properties o application.yml. Puoi modificare la porta, il contesto del servlet, ecc.
Avvio dell’Applicazione
Puoi avviare l’applicazione Spring Boot da riga di comando utilizzando Maven o Gradle, o direttamente dall’IDE.
Maven: Utilizza il comando mvn spring-boot:run.
Puoi spiegare come gestire le dipendenze in un progetto Spring Boot?
In genere, le dipendenze vengono gestite utilizzando Maven o Gradle, due strumenti di gestione delle dipendenze molto popolari nel mondo Java.
- Dipendenze Maven
Le dipendenze di un progetto Spring Boot vengono definite nel file pom.xml utilizzando la sintassi XML. All’interno della sezione <dependencies>, è possibile specificare le dipendenze necessarie per il progetto.</dependencies> - Utilizzo di Starter
Spring Boot offre una serie di “starter” che semplificano la configurazione delle dipendenze. Un “starter” è un insieme di dipendenze preconfigurate per una determinata funzionalità. Ad esempio, spring-boot-starter-web include tutte le dipendenze necessarie per creare un’applicazione web con Spring Boot.
Qual è la funzione delle annotazioni @SpringBootApplication
Funzione: @SpringBootApplication è un’annotazione di composizione che combina tre annotazioni separate: @Configuration, @EnableAutoConfiguration, e @ComponentScan.
Utilizzo: Viene utilizzata per identificare la classe di avvio dell’applicazione Spring Boot. Inoltre, abilita l’auto-configurazione, che consente a Spring Boot di configurare automaticamente l’applicazione in base al classpath e alle dipendenze presenti, e attiva la scansione dei componenti nell’applicazione.
Qual è la funzione delle annotazioni @Component?
Funzione: @Component è un’annotazione generica che indica che una classe è un componente Spring.
Utilizzo: Viene utilizzata per identificare le classi come componenti gestiti da Spring. Questi componenti vengono automaticamente rilevati e registrati nel contesto dell’applicazione durante la scansione dei componenti.
Qual è la funzione delle annotazioni @Service ?
Funzione: @Service è una specializzazione di @Component e viene utilizzata per identificare le classi che implementano la** logica di business dell’applicazione**.
Utilizzo: Viene utilizzata per marcare le classi che forniscono servizi o logiche di business all’interno dell’applicazione. Solitamente viene utilizzata nei layer di servizio dell’applicazione per eseguire operazioni come elaborazione dei dati, accesso al database, ecc.
Qual è la funzione delle annotazioni @Repository ?
Funzione: @Repository è una specializzazione di @Component e viene utilizzata per identificare le classi che gestiscono l’accesso ai dati (ad esempio, le operazioni di CRUD per un database).
Utilizzo: Viene utilizzata per marcare le classi che forniscono l’accesso ai dati, come ad esempio i repository per l’accesso ai dati del database. Spring Boot offre supporto per la gestione automatica delle eccezioni e la traduzione degli errori specifici del database utilizzando le classi marcate con @Repository.
Quando utilizzeresti @RestController rispetto a @Controller?
Utilizza @Controller se il controller deve restituire viste HTML o pagine web.
Utilizza @RestController se il controller deve restituire dati JSON o XML per servire un’API RESTful.
- Cosa fa l’annotazione @Autowired e quali sono i possibili problemi associati al suo utilizzo?
L’annotazione @Autowired in Spring viene utilizzata per l’iniezione delle dipendenze, consentendo a Spring di risolvere e iniettare automaticamente le dipendenze necessarie all’interno di un bean gestito.
Funzione: L’annotazione @Autowired viene utilizzata per l’iniezione automatica delle dipendenze all’interno di un bean gestito da Spring.
Utilizzo: Viene utilizzata per annotare campi, metodi setter, costruttori o parametri del metodo in modo che Spring possa iniettare automaticamente le dipendenze durante la creazione del bean.
Iniezione tramite Campo:
Iniezione tramite Setter:
Iniezione tramite Costruttore:
Qual è il ruolo di Spring Data JPA in un’applicazione Spring Boot?
In sintesi, Spring Data JPA semplifica notevolmente lo sviluppo di applicazioni Spring Boot che interagiscono con un database relazionale. Fornisce metodi di base predefiniti come save, findById, findAll, delete, ecc., che possono essere utilizzati direttamente senza scrivere codice.
Come configureresti una connessione a un database relazionale in Spring Boot?
Per prima cosa, assicurati di includere la dipendenza corretta per il driver del database nel file pom.xml (per Maven)
Configurazione application.properties
spring.datasource.url
spring.datasource.driver-class-name
spring.datasource.username
spring.datasource.password
Puoi spiegare il concetto di Repository in Spring Data JPA?
In Spring Data JPA, un repository è un’interfaccia che fornisce metodi per interagire con il database in modo astratto, senza la necessità di scrivere codice SQL. I repository sono utilizzati per eseguire operazioni CRUD (Create, Read, Update, Delete) sui dati e per definire query personalizzate.
- Quali sono i benefici di utilizzare Spring Boot per sviluppare microservizi?
L’utilizzo di Spring Boot per lo sviluppo di microservizi offre una serie di vantaggi, tra cui la facilità di avvio e configurazione, la scalabilità, la manutenibilità e il supporto per la produzione. Grazie alle sue funzionalità e alla vasta comunità di sviluppatori, Spring Boot è diventato uno dei framework più popolari per lo sviluppo di microservizi nell’ecosistema Java.
- Come gestiresti la comunicazione tra microservizi in Spring Boot?
Le principali modalità di comunicazione tra microservizi sono la comunicazione sincrona e asincrona.
Comunicazione Sincrona
HTTP/REST: Utilizza il protocollo HTTP per inviare richieste e ricevere risposte in formato JSON o XML.
Comunicazione asincrona
RabbitMQ
Kafka
Comunicazione Sincrona (Telefono)
Nella comunicazione sincrona, il client invia una richiesta al server e attende una risposta prima di continuare. Questa modalità implica che il client e il server sono strettamente accoppiati nel tempo: il client rimane bloccato finché non riceve la risposta dal server.
Comunicazione Asincrona (Email)
Nella comunicazione asincrona, il client invia una richiesta al server e non attende una risposta immediata, permettendo di continuare altre operazioni. La risposta viene gestita in modo non bloccante, spesso tramite callback, eventi o code di messaggi.
spiega la struttura del Framework di Spring
Il framework Spring è strutturato in una serie di moduli che offrono funzionalità specifiche e si integrano tra loro
Core Container
- AOP
- Data Access
- Web container
- Security