Senior
30
Как Spring AOP формирует прокси? Расскажи алгоритм проксирования.
Companies where asked
Answer from AI
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, которая анализирует конфигурацию аспектов и создает соответствующие прокси.