Sobes.tech
Middle

Αν τα beans δηλώνονται μέσω @Configuration και @Bean, πώς λειτουργεί το @Qualifier και ποιο είναι το όνομα του bean;

sobes.tech AI

Απάντηση από AI

Όταν τα beans δηλώνονται μέσω @Configuration και @Bean, η Spring τα δημιουργεί με ονόματα που αντιστοιχούν στο όνομα της μεθόδου που επιστρέφει το bean. Για παράδειγμα:

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyServiceImpl();
    }
}

Σε αυτήν την περίπτωση, το όνομα του bean είναι myService.

Η ανότα @Qualifier χρησιμοποιείται για να διευκρινίσει ποιο ακριβώς bean πρέπει να ενσωματωθεί, αν υπάρχουν πολλά beans του ίδιου τύπου στο πλαίσιο. Για παράδειγμα:

@Bean
public MyService myService1() { ... }

@Bean
public MyService myService2() { ... }

@Autowired
@Qualifier("myService2")
private MyService service;

Εδώ, το @Qualifier δείχνει στη Spring ότι πρέπει να ενσωματώσει το bean με το όνομα myService2.

Έτσι, το @Qualifier λειτουργεί με το όνομα του bean, το οποίο κατά κανόνα ταιριάζει με το όνομα της μεθόδου που δηλώνει το bean, εκτός αν οριστεί ρητά διαφορετικό μέσω της παραμέτρου name στο @Bean.