Junior — Middle
Ποια είναι η διαφορά μεταξύ των annotations @Bean και @Component στο Spring, και σε ποιες περιπτώσεις πρέπει να χρησιμοποιούνται;
sobes.tech AI
Απάντηση από AI
Η σημείωση @Component χρησιμοποιείται για την αυτόματη ανίχνευση και εγγραφή της κλάσης ως Spring-Bean μέσω σάρωσης συστατικών (component scanning). Εφαρμόζεται άμεσα πάνω στην κλάση που πρέπει να γίνει bean.
Η σημείωση @Bean εφαρμόζεται σε μια μέθοδο μέσα σε μια κλάση που έχει χαρακτηριστεί ως @Configuration. Αυτή η μέθοδος επιστρέφει ένα αντικείμενο που το Spring θα καταχωρίσει ως bean.
Βασικές διαφορές:
@Component— για κλάσεις που ανιχνεύονται αυτόματα μέσω σάρωσης.@Bean— για χειροκίνητη δημιουργία bean σε μια κλάση διαμόρφωσης.
Πότε να χρησιμοποιείτε:
@Component— όταν η κλάση από μόνη της αποτελεί ένα συστατικό και μπορεί να βρεθεί αυτόματα.@Bean— όταν χρειάζεται να δημιουργηθεί bean από μια εξωτερική κλάση ή όταν απαιτείται πιο πολύπλοκη λογική δημιουργίας αντικειμένου.
Παράδειγμα:
@Component
public class MyService {
// ...
}
@Configuration
public class AppConfig {
@Bean
public MyRepository myRepository() {
return new MyRepository();
}
}