Junior
Για ποιο λόγο χρησιμοποιείται η σημείωση @Bean στο Spring Framework;
sobes.tech AI
Απάντηση από AI
Η σημείωση @Bean χρησιμοποιείται στο Spring για να δηλώσει μεθόδους που παράγουν beans (αντικείμενα που διαχειρίζεται το κοντέινερ IoC του Spring). Η μέθοδος που σημειώνεται με @Bean εκτελείται από το Spring και η τιμή που επιστρέφει καταγράφεται ως bean στο πλαίσιο της εφαρμογής.
Κύριες περιπτώσεις χρήσης:
- Ρύθμιση εξωτερικών βιβλιοθηκών: Όταν δεν είναι δυνατή η εφαρμογή annotations Spring (@Component, @Service κ.λπ.) σε κλάσεις εξωτερικών βιβλιοθηκών.
- Λεπτομερής ρύθμιση δημιουργίας bean: Όταν απαιτείται πολύπλοκη λογική αρχικοποίησης αντικειμένου, δύσκολη ή αδύνατη να υλοποιηθεί με annotations.
- Συνθήκη δημιουργίας bean: Μαζί με τις annotations
@Conditionalγια δημιουργία bean ανάλογα με ορισμένες συνθήκες.
Παράδειγμα δημιουργίας bean με @Bean:
// Σε μια κλάση με @Configuration
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// Πολύπλοκη λογική δημιουργίας DataSource
return new com.zaxxer.hikari.HikariDataSource(); // Παράδειγμα
}
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// Ρύθμιση RestTemplate
return builder.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
Τα beans που δηλώνονται με @Bean είναι διαθέσιμα για εξάρτηση (dependency injection) σε άλλα components του Spring. Από προεπιλογή, το όνομα του bean ταιριάζει με το όνομα της μεθόδου, αλλά μπορεί να οριστεί ρητά με τα attributes name ή value.
// Ορισμός ρητού ονόματος bean
@Bean(name = "myCustomRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
// ...
return builder.build();
}