작성
·
396
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
스프링은 AOP(관점 지향 프로그래밍)을 구현하기 위해서 CGLIB와 JDK 프록시 방식을 모두 지원합니다.
CGLIB는 클래스를 상속받아 프록시 객체를 생성하는 방식이고, JDK 프록시는 인터페이스를 구현하여 프록시 객체를 생성하는 방식입니다.
CGLIB는 클래스를 상속받기 때문에 인터페이스가 없는 클래스, 즉 final 클래스나 private 생성자가 있는 클래스에는 적용할 수 없습니다. JDK 프록시는 인터페이스를 구현하기 때문에 어떤 클래스에든 적용할 수 있지만, 인터페이스가 많을수록 코드가 복잡해질 수 있습니다.
따라서, 클래스에 대한 프록시를 생성해야 한다면 CGLIB를 사용하는 것이 좋고, 인터페이스에 대한 프록시를 생성해야 한다면 JDK 프록시를 사용하는 것이 좋습니다. 또한, 메소드 호출 속도 측면에서는 JDK 프록시가 더 빠르지만, CGLIB는 조금 더 유연한 기능을 제공합니다.
어떤 방식이 유용한지는 개발자의 상황과 선호도에 따라 다를 수 있으므로, 상황에 맞게 선택하시면 됩니다.