Встречается на собеседованиях • сегодня

Как правильно организовать три зависимости внутри сервиса, каждая из которых имеет интерфейс и три реализации

Для организации зависимостей с интерфейсами и реализациями в Spring лучше использовать @Qualifier или @Primary. Вот подход:

  1. Интерфейс + реализации:
java
public interface PaymentService {
    void process();
}

@Service("creditCardPayment")
public class CreditCardPayment implements PaymentService {...}

@Service("paypalPayment")
public class PaypalPayment implements PaymentService {...}

text

2. **Использование через `@Qualifier`**:
```java
@Service
public class OrderService {
    private final PaymentService paymentService;
    
    @Autowired
    public OrderService(@Qualifier("creditCardPayment") PaymentService paymentService) {
        this.paymentService = paymentService;
    }
}
  1. Или через @Primary (если одна реализация основная):
java
@Service
@Primary
public class DefaultPayment implements PaymentService {...}

Для более сложных случаев можно использовать фабричный метод с @Configuration и @Bean. Это дает четкое разделение зависимостей и гибкость в выборе реализации.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы