Назад к вопросам
Aston
Junior — Middle
68
Можно ли реализовать прокси-объект для обычного класса без применения средств фреймворка Spring?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Да, прокси-объект для обычного класса можно реализовать без Spring, используя стандартные средства Java. Например, можно применить динамические прокси через java.lang.reflect.Proxy для интерфейсов или библиотеку CGLIB для проксирования классов без интерфейсов.
Пример динамического прокси для интерфейса:
import java.lang.reflect.*;
interface Service {
void execute();
}
class ServiceImpl implements Service {
public void execute() {
System.out.println("Выполнение метода execute");
}
}
class ProxyHandler implements InvocationHandler {
private final Object target;
public ProxyHandler(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Перед вызовом метода");
Object result = method.invoke(target, args);
System.out.println("После вызова метода");
return result;
}
}
public class Main {
public static void main(String[] args) {
Service original = new ServiceImpl();
Service proxy = (Service) Proxy.newProxyInstance(
Service.class.getClassLoader(),
new Class[]{Service.class},
new ProxyHandler(original)
);
proxy.execute();
}
}
Если класс не реализует интерфейс, можно использовать CGLIB для создания прокси на основе наследования.