Sobes.tech
Junior — Middle
73

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

Ответ от нейросети

sobes.tech AI

В 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.