Назад к вопросам
СБЕР
Senior
5
Как Spring AOP формирует прокси? Расскажи алгоритм проксирования.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Spring AOP формирует прокси для внедрения аспектов вокруг целевых объектов. Алгоритм примерно такой:
-
Определение типа прокси:
- Если целевой объект реализует хотя бы один интерфейс, Spring создаст JDK Dynamic Proxy, который проксирует интерфейсы.
- Если интерфейсов нет, используется CGLIB для создания прокси на основе наследования от класса.
-
Создание прокси:
- Spring создает прокси-объект, который перехватывает вызовы методов.
- В прокси внедряются цепочки аспектов (Advice), которые выполняются до, после или вокруг вызова метода.
-
Вызов метода:
- При вызове метода на прокси сначала выполняются соответствующие Advice (например, before, around).
- Затем вызывается оригинальный метод целевого объекта.
- После выполнения метода выполняются after Advice.
Пример создания прокси с использованием JDK Dynamic Proxy:
MyService target = new MyServiceImpl();
MyService proxy = (MyService) Proxy.newProxyInstance(
target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
(proxyObj, method, args) -> {
System.out.println("Before method");
Object result = method.invoke(target, args);
System.out.println("After method");
return result;
});
В Spring это происходит автоматически через инфраструктуру AOP, которая анализирует конфигурацию аспектов и создает соответствующие прокси.