Hardaop
Что такое AOP в Spring?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
AOP (Aspect-Oriented Programming) — разделение cross-cutting concerns (логирование, транзакции, security, caching). Spring AOP использует dynamic proxies (JDK для interfaces, CGLIB для классов).
@Aspect
@Component
public class LogAspect {
@Around("execution(* com.example.service..*(..))")
public Object log(ProceedingJoinPoint pjp) throws Throwable {
log.info("before {}", pjp.getSignature());
Object result = pjp.proceed();
log.info("after {}", pjp.getSignature());
return result;
}
}Концепции:
- Aspect — модуль с advices (
@Aspect); - Advice — действие:
@Before,@After,@Around,@AfterReturning,@AfterThrowing; - Pointcut — где применять (
execution(* com.example..*.*(..))); - Join point — в Spring только method execution.
Self-invocation (this.method() внутри класса) — proxy не используется, advice не сработает. AspectJ мощнее (compile-time weaving).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.