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


