Какой компонент Spring Boot обеспечивает внедрение зависимостей через абстрактные интерфейсы и реализации?

Spring сканирует классы, помеченные аннотациями (@Component, @Service, @Repository), создает их экземпляры и внедряет зависимости, основываясь на типах интерфейсов.

Короткий ответ

Что ответить на собеседовании

В Spring Boot внедрение зависимостей через абстрактные интерфейсы и их реализации обеспечивается с помощью компонента Spring Framework, а именно механизма Inversion of Control (IoC) контейнера и аннотаций, таких как @Autowired.

Подробный разбор

Ответ с пояснениями

В Spring Boot внедрение зависимостей через абстрактные интерфейсы и их реализации обеспечивается с помощью компонента Spring Framework, а именно механизма Inversion of Control (IoC) контейнера и аннотаций, таких как @Autowired.

Spring сканирует классы, помеченные аннотациями (@Component, @Service, @Repository), создает их экземпляры и внедряет зависимости, основываясь на типах интерфейсов. Это позволяет использовать абстракции и легко менять реализации без изменения кода, который их использует.

Пример:

public interface PaymentService {
    void pay();
}

@Service
public class CreditCardPaymentService implements PaymentService {
    public void pay() {
        // реализация оплаты
    }
}

@Component
public class OrderProcessor {
    private final PaymentService paymentService;

    @Autowired
    public OrderProcessor(PaymentService paymentService) {
        this.paymentService = paymentService;
    }

    public void process() {
        paymentService.pay();
    }
}

Здесь Spring внедрит CreditCardPaymentService в OrderProcessor по интерфейсу PaymentService.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее