Sobes.tech
Назад к вопросам
Junior — Middle
64

Мог бы пояснить, что такое CGLib и как оно используется в Java?

Компании, где спрашивали
СБЕР КорпусСБЕР Корпус

Ответ от нейросети

sobes.tech AI

CGLib (Code Generation Library) — это библиотека для динамического создания прокси-классов в Java во время выполнения. Она позволяет создавать подклассы заданных классов и переопределять методы без необходимости изменять исходный код.

Основное применение CGLib — создание прокси для классов, которые не реализуют интерфейсы, что полезно, например, в Spring Framework для реализации аспектно-ориентированного программирования (AOP).

Пример использования CGLib для создания прокси:

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;

public class Example {
    public static class Original {
        public void sayHello() {
            System.out.println("Hello from Original");
        }
    }

    public static void main(String[] args) {
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(Original.class);
        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
                System.out.println("Before method call");
                Object result = proxy.invokeSuper(obj, args);
                System.out.println("After method call");
                return result;
            }
        });

        Original proxy = (Original) enhancer.create();
        proxy.sayHello();
    }
}

В этом примере создается прокси-класс, который оборачивает вызов метода sayHello, добавляя дополнительный код до и после вызова оригинального метода.