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.