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;
}
}