전체 글
-
[Spring] 스프링 핵심 원리 - @Aspect AOPStudy/Spring 2025. 4. 22. 23:33
@Aspect 프록시 - 적용스프링은 @Aspect 어노테이션으로 Pointcut과 Advice로 구성되어 있는 Advisor 생성 기능을 지원함 예시)더보기import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;@Slf4j@Aspectpublic class LogTraceAspect { private final LogTrace logTrace; public LogTraceAspect(LogTrace logTrace) { this.logTrace = l..
-
[Spring] 스프링 핵심 원리 - 빈 후처리기Study/Spring 2025. 4. 21. 23:54
빈 후처리기 (BeanPostProcessor)@Bean이나 컴포넌트 스캔에 의해 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 BeanPostProcessor를 사용하면 됨빈 객체를 프록시로 교체하는 것도 가능함 BeanPostProcessor에 의한 스프링 빈 등록 과정생성 : 스프링 빈 대상이 되는 객체를 생성한다. (@Bean, 컴포넌트 스캔 모두 포함)전달 : 생성된 객체를 빈 저장소에 등록하기 직전에 BeanPostProcessor에 전달한다.후 처리 작업 : BeanPostProcessor는 전달받은 스프링 빈 객체를 조작하거나 다른 객체로 바꿔치기 할 수 있다.등록 : BeanPostProcessor는 빈을 반환한다. 전달된 빈을 그대로 반..
-
[Spring] 스프링 핵심 원리 - 스프링이 지원하는 프록시Study/Spring 2025. 4. 20. 22:44
앞서 살펴본 동적 프록시를 사용할 때 문제점인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용하려면 어떻게 해야할까?두 기술을 함께 사용할 때 부가 기능을 제공하기 위해 JDK 동적 프록시가 제공하는 InvocationHandler와 CGLIB가 제공하는 MethodInterceptor를 각각 중복으로 만들어서 관리해야 할까?특정 조건에 부합하는 경우에만 프록시 로직을 적용하려면 어떻게 해야 할까? 미리 요약하자면,스프링 프록시 팩토리의 서비스 추상화 덕분에 구체적인 CGLIB, JDK 동적 프록시 기술에 의존하지 않고, 편리하게 동적 프록시를 생성할 수 있음프록시 팩토리의 프록시 기술 선택 기준대상에 인터페이스가 있으면 : JDK 동적 프록시 (인터페이스 ..
-
[Spring] 스프링 핵심 원리 - 동적 프록시Study/Spring 2025. 4. 20. 20:54
프록시 기술이 왜 필요할까?자바가 기본으로 제공하는 JDK 동적 프록시 기술이나 CGLIB 같은 프록시 생성 오픈소스 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있음즉, 프록시 클래스를 직접 정의하지 않아도 됨프록시를 적용할 코드를 하나만 만들어두고 동적 프록시 기술을 사용해 프록시 객체를 찍어내는 것 리플렉션동적 프록시를 이해하기 위해서는 먼저 자바의 리플렉션 기술을 이해해야 함리플렉션 기술을 사용하면 클래스나 메서드의 메타정보를 동적으로 획득하고, 코드도 동적으로 호출할 수 있음주의리플렉션 기술은 런타임에 동작하기 때문에, 컴파일 시점에 오류를 잡을 수 없음리플렉션은 프레임워크 개발이나 또는 매우 일반적인 공통 처리가 필요할 때 부분적으로 주의해서 사용해야 함 예시)더보기@Testvoid r..