Domande Spring Boot Flashcards

1
Q
  1. Cos’è Spring Boot e quali sono i suoi vantaggi rispetto a Spring Framework?
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. Come si configura un’applicazione Spring Boot?
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Puoi spiegare come gestire le dipendenze in un progetto Spring Boot?

A

In genere, le dipendenze vengono gestite utilizzando Maven o Gradle, due strumenti di gestione delle dipendenze molto popolari nel mondo Java.

  1. 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>
  2. 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual è la funzione delle annotazioni @SpringBootApplication

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual è la funzione delle annotazioni @Component?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual è la funzione delle annotazioni @Service ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual è la funzione delle annotazioni @Repository ?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quando utilizzeresti @RestController rispetto a @Controller?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. Cosa fa l’annotazione @Autowired e quali sono i possibili problemi associati al suo utilizzo?
A

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:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qual è il ruolo di Spring Data JPA in un’applicazione Spring Boot?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Come configureresti una connessione a un database relazionale in Spring Boot?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Puoi spiegare il concetto di Repository in Spring Data JPA?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. Quali sono i benefici di utilizzare Spring Boot per sviluppare microservizi?
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. Come gestiresti la comunicazione tra microservizi in Spring Boot?
A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

spiega la struttura del Framework di Spring

A

Il framework Spring è strutturato in una serie di moduli che offrono funzionalità specifiche e si integrano tra loro

  1. Core Container
  2. AOP
  3. Data Access
  4. Web container
  5. Security
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Come collabori con altri membri del team quando lavori su un progetto Spring Boot?

A

Piattaforme di Versionamento: Utilizza sistemi di controllo del versionamento come Git
Comunicazione in Tempo Reale: Utilizza strumenti di comunicazione in tempo reale come Slack
Utilizzo di Issue Tracker: Utilizza un sistema di tracciamento dei problemi come Jira
Revisione del Codice: Fai uso delle revisioni del codice per garantire la qualità del codice e la conformità agli standard del team. Utilizza strumenti come GitHub pull requests o GitLab merge requests per facilitare le revisioni del codice tra i membri del team.

Automazione e Test:
Integrazione Continua (CI) e Distribuzione Continua (CD): Configura pipeline di integrazione continua e distribuzione continua utilizzando strumenti come Jenkins, Travis CI o GitLab CI per automatizzare i processi di compilazione, test e distribuzione dell’applicazione.

Test Automatici: Scrivi test automatici, compresi test unitari, test di integrazione e test di accettazione, per garantire che l’applicazione funzioni correttamente e per individuare eventuali problemi prima del rilascio in produzione.

17
Q

Cosa sono le dipendenze?

A

In Spring, le dipendenze (dependencies) rappresentano oggetti che una classe necessita per funzionare correttamente. Sono le risorse o i componenti esterni a cui una classe fa riferimento per eseguire determinate operazioni.

18
Q

Quali sono le modalità di configurazione del container di spring boot?

A
  • File.xml
  • application.properties
  • Classe di Config.java
  • Annotation

Dentro al file Config.java si utilizza
la notazione @Configuration
l’ oggetto DriverManagerDataSource

DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/nome_database");
        dataSource.setUsername("nome_utente");
        dataSource.setPassword("password");
19
Q

Quali sono le caratteristiche principali di Spring Boot?

A

Configurazione Automatica
Modularità
Integrazione con altri Framework (Hibernate)
Ha il Embedded Server
Integrato con Maven
Si presta alla creazione di microServizi