런타임 시점의 정확한 의미는?2개?한개?
242
작성한 질문수 60
1. CGLIB에서 말하는 런타임의 정확한 시점이 궁금한데? 프록시를 생성하고 바이트 코드를 조작하는 그 시점이 런타임 이다 라고 하는게 맞나요? 스프링이 빈을 컨테이너에 등록하기 이전에 프록시를 생성해서 빈으로 등록하는 그 시점을 런타임이라고 하는거죠?
2. AOP 적용 방식 3가지 중 마지막 런타임시점에 대해
여기서 스프링이 쓰는 AOP도 결국 CGLIB인데 그러면 여기서 말하는 런타임의 정확한 의미도 1번과 동일한 시점을 얘기하는건가요?
아니면 실제 객체의 메소드를 호출하는 그 시점을 런타임 이라고 얘기하는건가요?
아니면 둘다인가요?
답변 1
2
안녕하세요, 인프런 AI 인턴입니다.
리어스리님의 질문은 스프링과 AOP, 특히 CGLIB와 런타임 시점에 대한 정확한 의미와 관련되어 있습니다. 이에 대해 명확한 설명을 제공드립니다.
CGLIB에서 말하는 런타임의 정확한 시점에 대해 질문하셨습니다. CGLIB (Code Generation Library)는 런타임에 프록시 객체를 동적으로 생성하고 바이트 코드를 조작하는 라이브러리입니다. 이때 “런타임”이란 표현은 애플리케이션이 실행되어 있는 동안, 즉 코드가 컴파일 후 실행되고 있는 시점을 의미합니다. 따라서 프록시를 생성하고 바이트 코드를 조작하는 시점이 바로 런타임입니다. 스프링이 빈을 컨테이너에 등록하기 이전에 CGLIB를 통해 프록시 객체를 생성해 빈으로 등록하는 과정도 이 런타임에 해당합니다.
AOP 적용 방식의 런타임 시점에 대해서는, 스프링 AOP 역시 CGLIB 또는 JDK 동적 프록시를 사용하여 런타임에 프록시 객체를 생성합니다. 여기서의 “런타임”은 마찬가지로 애플리케이션이 실행되는 동안, 즉 실제 객체의 메소드가 호출되기 바로 전에 프록시를 통해 추가적인 행동(조언)이 적용되는 시점을 의미합니다. 따라서 스프링 AOP에서 말하는 런타임 시점은, 프록시가 생성되고 조언이 적용되는 시점을 포함하여 실제 메소드 호출이 이루어지는 그 때까지를 의미합니다.
요약하자면, CGLIB와 스프링 AOP의 컨텍스트에서 “런타임”은 프록시 객체 생성에서 실제 메소드 호츨 이루어지는 전 과정을 포함한 실행 시점을 말합니다. 스프링이 CGLIB를 사용해 프록시 객체를 생성하고, 이를 통해 AOP가 적용되는 모든 과정이 런타임에 해당합니다.
이에 관련된 자세한 내용은 다음 질문&답변을 참조하시면 더 많은 정보를 얻을 수 있습니다:
- CGLIB 와 클래스 로딩시점의 차이..
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
어드바이스 순서 디폴트 기준이 궁금합니다.
0
50
1
AspectV1 예제를 @Configuration 수동 등록으로도 가능한가요?
0
77
2
구체 클래스를 상속받아 확장한 형태도 클래스패턴/데코레이터 패턴이라고 칭하나요?
0
49
1
TraceTemplate 을 미리 빈으로 등록해서 사용할때 이렇게 설정하는게 맞는건가요?
0
53
1
Decorator 에서 추상메서드로 뺄때 질문 있습니다.
0
55
1
대상 클래스에 기본 생성자가 없을 때
0
74
1
스프링 부트 버전 4.0 aop 의존성 명칭 변경
1
341
2
final 키워드 사용 관련 질문
0
74
1
안녕하세요
0
64
1
ThradLocal 실무 사례
0
97
2
실무에서의 동시성 문제
0
62
1
로그 등 부가 기능에 대한 테스트코드
0
50
1
ProceedingJoinPoint와 MethodInvocation에 대하여
0
66
1
실무 멀티스레딩에 대한 궁금증
0
69
1
안녕하세요 질문있습니다
0
43
1
AspectV3 aop 실행 순서 문의 드립니다
0
37
1
MDC vs AOP 중에 고민중입니다.
0
74
1
순환참조
0
158
2
this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이
0
77
1
빈 후처리에 등록 질문 있습니다.
0
75
1
AppConfig 설정하는 설명중에 이해가 안되는게 있습니다.
0
88
1
ThreadLocal을 지역변수로 선언하면 remove가 필요할까요?
0
116
2
@Aspect 어노테이션으로 생성된 Advisor의 Bean 저장 여부
0
67
1
ThreadLocal 사용시 부작용이 있을수 있을까요? (ThreadLocal.remove()를 잘한다고 해도..)
0
72
2





