Sobes.tech
Junior — Middle

Πώς μπορεί να αποφευχθεί μια σύγκρουση κατά τη χρήση δύο ίδιων beans στο κοντέινερ Spring;

sobes.tech AI

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

Στο κοντέινερ Spring, προκύπτει σύγκρουση αν δύο beans έχουν το ίδιο όνομα (ταυτοποίηση). Για να αποτρέψετε τη σύγκρουση:

  • Χρησιμοποιήστε διαφορετικά ονόματα για τα beans με την ανότα @Component("όνομα") ή στη διαμόρφωση XML/Java.
  • Χρησιμοποιήστε την ανότα @Qualifier κατά την εισαγωγή εξαρτήσεων για να δηλώσετε ρητά ποιο bean να χρησιμοποιηθεί.
  • Κάντε ένα από τα beans @Primary, ώστε να χρησιμοποιείται προεπιλεγμένα σε περίπτωση σύγκρουσης.

Παράδειγμα με @Qualifier:

@Component("beanOne")
public class BeanOne {}

@Component("beanTwo")
public class BeanTwo {}

@Service
public class MyService {
    private final BeanOne beanOne;

    public MyService(@Qualifier("beanOne") BeanOne beanOne) {
        this.beanOne = beanOne;
    }
}