Чтобы применить одну и ту же бизнес-логику к разным компонентам Bean в Spring и избежать дублирования кода, можно использовать несколько подходов:
Каким образом можно применить одну и ту же бизнес-логику к разным компонентам Bean в Spring, избегая дублирования кода?
Чтобы применить одну и ту же бизнес-логику к разным компонентам Bean в Spring и избежать дублирования кода, можно использовать несколько подходов:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Чтобы применить одну и ту же бизнес-логику к разным компонентам Bean в Spring и избежать дублирования кода, можно использовать несколько подходов:
- Вынести общую логику в отдельный сервис или компонент — создать отдельный класс с бизнес-логикой и внедрять его в нужные Beans через @Autowired.
- Использовать наследование — создать базовый класс с общей логикой, а компоненты расширять этот класс.
- Применить аспектно-ориентированное программирование (AOP) — выделить общую логику в аспект, который будет применяться к нужным методам разных Beans.
Пример с сервисом:
@Service
public class CommonBusinessLogic {
public void execute() {
// общая бизнес-логика
}
}
@Component
public class BeanA {
private final CommonBusinessLogic commonLogic;
@Autowired
public BeanA(CommonBusinessLogic commonLogic) {
this.commonLogic = commonLogic;
}
public void doWork() {
commonLogic.execute();
// специфичная логика BeanA
}
}
@Component
public class BeanB {
private final CommonBusinessLogic commonLogic;
@Autowired
public BeanB(CommonBusinessLogic commonLogic) {
this.commonLogic = commonLogic;
}
public void doWork() {
commonLogic.execute();
// специфичная логика BeanB
}
}
Такой подход позволяет централизовать бизнес-логику и переиспользовать её в разных компонентах.