Back to questions
Альфа-Банк
Junior — Middle
75
Каким образом можно применить одну и ту же бизнес-логику к разным компонентам Bean в Spring, избегая дублирования кода?
Companies where asked
Answer from AI
sobes.tech AI
Чтобы применить одну и ту же бизнес-логику к разным компонентам 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
}
}
Такой подход позволяет централизовать бизнес-логику и переиспользовать её в разных компонентах.