Sobes.tech
Junior

Waarvoor wordt de @Bean-annotatie gebruikt in Spring Framework?

sobes.tech AI

Antwoord van AI

De annotatie @Bean wordt in Spring gebruikt om methoden te declareren die beans (objecten die door de Spring IoC-container worden beheerd) produceren. De methode gemarkeerd met @Bean wordt door Spring uitgevoerd, en de geretourneerde waarde wordt geregistreerd als een bean in de applicatiecontext.

Belangrijkste gebruiksgevallen:

  • Configuratie van externe bibliotheken: Wanneer het niet mogelijk is om Spring-annotaties (@Component, @Service, etc.) toe te passen op klassen van externe bibliotheken.
  • Fijnmazige configuratie van bean-creatie: Wanneer complexe initialisatielogica vereist is, die moeilijk of onmogelijk te realiseren is met annotaties.
  • Voorwaardelijke creatie van beans: Samen met de @Conditional-annotaties om beans te maken afhankelijk van bepaalde voorwaarden.

Voorbeeld van het maken van een bean met @Bean:

// In een klasse gemarkeerd met @Configuration
@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        // Complexe logica voor het maken van DataSource
        return new com.zaxxer.hikari.HikariDataSource(); // Voorbeeld
    }

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) {
        // Configuratie van RestTemplate
        return builder.setConnectTimeout(Duration.ofSeconds(5))
                      .setReadTimeout(Duration.ofSeconds(5))
                      .build();
    }
}

Bean's die met @Bean zijn gedeclareerd, zijn beschikbaar voor dependency injection in andere Spring-componenten. Standaard komt de naam van de bean overeen met de naam van de methode, maar deze kan expliciet worden ingesteld met de attributen name of value.

// Expliciete naam toewijzing aan de bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    // ...
    return builder.build();
}