Sobes.tech
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();
    }
}