Tutorial Spring

image_pdfimage_print

Quando usare @Bean e @Component

  • @Component:
    • Si usa per annotare classi che Spring deve rilevare automaticamente come componenti gestiti.
    • È ideale per classi di servizio, repository e altri componenti generici.
    • Spring li rileva durante la scansione dei componenti.
    • Esempio:

      Java

      import org.springframework.stereotype.Component;
      
      @Component
      public class MioServizio {
          public void faiQualcosa() {
              System.out.println("Servizio in esecuzione");
          }
      }
      
  • @Bean:
    • Si usa all’interno di classi @Configuration per dichiarare metodi che producono bean gestiti da Spring.
    • È ideale per configurare bean di terze parti o per configurazioni complesse.
    • Permette un controllo più preciso sulla creazione e configurazione dei bean.
    • Esempio:

      Java

      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class AppConfig {
          @Bean
          public MioServizio mioServizio() {
              return new MioServizio();
          }
      }
      

2. Annotazioni Spring e Lombok

Annotazioni Spring

  • @Component:
    • Indica che una classe è un componente gestito da Spring.
    • Sintassi: @Component
  • @Service:
    • Specializzazione di @Component per classi di servizio.
    • Sintassi: @Service
  • @Repository:
    • Specializzazione di @Component per classi di accesso ai dati (DAO).
    • Sintassi: @Repository
  • @Controller:
    • Indica che una classe è un controller MVC.
    • Sintassi: @Controller
  • @Autowired:
    • Inietta dipendenze automaticamente.
    • Sintassi: @Autowired
  • @Configuration:
    • Indica che una classe contiene definizioni di bean.
    • Sintassi: @Configuration
  • @Bean:
    • Definisce un bean gestito da Spring.
    • Sintassi: @Bean
  • @Value:
    • Inietta valori da file di proprietà o variabili d’ambiente.
    • Sintassi: @Value("${nome.proprietà}")

Annotazioni Lombok

  • @Getter/@Setter:
    • Genera metodi getter e setter.
    • Sintassi: @Getter, @Setter
  • @ToString:
    • Genera il metodo toString().
    • Sintassi: @ToString
  • @EqualsAndHashCode:
    • Genera metodi equals() e hashCode().
    • Sintassi: @EqualsAndHashCode
  • @Data:
    • Combina @Getter, @Setter, @ToString, @EqualsAndHashCode.
    • Sintassi: @Data
  • @NoArgsConstructor:
    • Genera un costruttore senza argomenti.
    • Sintassi: @NoArgsConstructor
  • @AllArgsConstructor:
    • Genera un costruttore con tutti gli argomenti.
    • Sintassi: @AllArgsConstructor

3. Sintassi di Thymeleaf

Thymeleaf è un motore di template per Java che permette di creare pagine HTML dinamiche.

  • Integrazione con Spring:
    • Spring Boot configura automaticamente Thymeleaf.
  • Sintassi di base:
    • th:text="${variabile}": Mostra il valore di una variabile.
    • th:each="elemento : ${lista}": Itera su una lista.
    • th:if="${condizione}": Mostra un elemento se la condizione è vera.
    • Esempio:

      HTML

      <!DOCTYPE html>
      <html xmlns:th="http://www.thymeleaf.org">
      <head>
          <title>Esempio Thymeleaf</title>
      </head>
      <body>
          <h1 th:text="'Ciao, ' + ${nome} + '!'"></h1>
          <ul>
              <li th:each="prodotto : ${prodotti}" th:text="${prodotto.nome}"></li>
          </ul>
      </body>
      </html>
      

4. @Configuration

  • Si usa per annotare classi che contengono definizioni di bean.
  • Queste classi sono responsabili della configurazione dell’applicazione.
  • Esempio:

    Java

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class AppConfig {
        @Bean
        public MioServizio mioServizio() {
            return new MioServizio();
        }
    }
    

5. application.properties

  • Si usa per configurare le proprietà dell’applicazione.
  • Spring Boot carica automaticamente questo file.
  • Esempio:

    Properties

    server.port=8080
    spring.datasource.url=jdbc:h2:mem:testdb
    spring.datasource.username=sa
    spring.datasource.password=password