Junior
A cosa serve l'annotazione @Bean nel Spring Framework?
sobes.tech AI
Risposta dell'AI
L'annotazione @Bean viene utilizzata in Spring per dichiarare metodi che producono bean (oggetti gestiti dal contenitore IoC di Spring). Il metodo annotato con @Bean viene eseguito da Spring, e il suo valore di ritorno viene registrato come un bean nel contesto dell'applicazione.
Principali casi d'uso:
- Configurazione di librerie esterne: Quando non è possibile applicare annotazioni Spring (@Component, @Service, ecc.) alle classi di librerie esterne.
- Configurazione dettagliata di creazione di bean: Quando è richiesta una logica di inizializzazione complessa, difficile o impossibile da realizzare con annotazioni.
- Creazione condizionale di bean: Insieme alle annotazioni
@Conditionalper creare bean in base a determinate condizioni.
Esempio di creazione di un bean con @Bean:
// In una classe annotata con @Configuration
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// Logica complessa di creazione di DataSource
return new com.zaxxer.hikari.HikariDataSource(); // Esempio
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// Configurazione di RestTemplate
return builder.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
I bean dichiarati con @Bean sono disponibili per l'iniezione (dependency injection) in altri componenti Spring. Per impostazione predefinita, il nome del bean corrisponde al nome del metodo, ma può essere impostato esplicitamente usando gli attributi name o value.
// Assegnazione esplicita del nome del bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// ...
return builder.build();
}