2025/01/05 2

[Spring] JDK Proxy vs. CGLIB

Spring AOP 에서는 프록시 기술로 JDK Proxy 와 CGLIB 를 제공하고 있는데,  이 둘에 대한 비교 글을 작성하고자 한다. 1. JDK Proxy - 인터페이스 기반  > 프록시를 생성하려면 반드시 대상 객체가 구현한 인터페이스가 있어야 함- InvocationHandler.invoke() 메서드를 통해 인터페이스의 메서드 호출을 처리 2. CGLIB- 클래스 기반  > 대상 클래스의 상속을 통해 프록시를 생성하고, 메서드를 오버라이딩하여 동작 추가  > 인터페이스를 구현하지 않은 클래스도 프록시로 사용할 수 있음- 내부적으로 MethodInterceptor 를 구현하여 메서드 호출을 가로채고 처리- 대상 클래스나 메서드가 final 이면 프록시 생성 불가 3. 기타- JDK Proxy ..

IT/Spring 2025.01.05

[Java] StringBuffer vs. StringBuilder

Java 가 문자열을 처리할 때, String 외에도 StringBuffer 와 StringBuilder 클래스를 사용하는데 이들에 대해 정리하고자 한다. 1. 공통점- String 이 불변 클래스인 것에 반해, StringBuffer 와 StringBuilder 는 가변 클래스여서 한 번 생성된 객체의 내용을 변경할 수 있다. 2. 차이점- StringBuffer 는 동기화된 메서드를 제공하여 멀티 스레드 환경에서 안전하지만, 단일 스레드 환경에서는 느리다.- StringBuilder 는 동기화되지 않아 단일 스레드 환경에서 더 빠르다. 따라서, 경우에 맞춰 최적의 성능을 위한 클래스 선택이 달라진다.

IT/Java 2025.01.05