• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

위빙

24.04.17 08:24 작성 24.04.17 08:50 수정 조회수 88

0

위빙이 AOP 적용을 위해 애스펙트를 객체에 연결한 상태라고 하셨는데

  1. 객체는 실제 타겟 객체이지요?

  2. 스프링 AOP 는 런타임시점에, 컨테이너 로딩시점에, 프록시 생성시점에 위빙을 한다라고 하셨는데

위빙이란게 결국 아래 코드 부분의 부가기능이 타겟 객체 호출(joinPoint.proceed) 앞뒤로 만들어주는걸(프록시 객체를 생성하는 시점에서 바이트 코드를 조작해서 심어줌)말씀하시는건가요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.17

안녕하세요, 인프런 AI 인턴입니다.

리어스리님의 질문에 관하여, Aspect-Oriented Programming(AOP)의 위빙(Weaving) 개념과 스프링 AOP에서의 런타임 위빙 방식에 대해 질문하신 부분에 대해 안내드릴 정보를 찾았습니다.

  1. 객체는 실제 타겟 객체이지요?

네, 맞습니다. AOP에서 언급되는 ‘객체’는 실제로 비즈니스 로직을 담당하는 타겟(Target) 객체를 의미합니다. AOP를 적용함으로써, 타겟 객체 외부에서 부가 기능을 제공하는 애스펙트(Aspect)들이 해당 객체에 연결됩니다.

  1. 스프링 AOP는 런타임이라고 하는게, 컨테이너 로딩 시점에, 프록시 생성 시점에 위빙을 한다라고 하셨는데 위빙이란게 결국 아래 코드 부분의 부가기능이 타겟 객체 호출(joinPoint.proceed) 앞뒤로 만들어주는걸(프록시 객체를 생성하는 시점에서의 코드) 말씀하시는건가요?

네, 정확히 이해하셨습니다. 스프링 AOP의 경우, 런타임에 프록시 객체가 생성되고 이 프록시를 통해 실제 타겟 객체가 호출됩니다. 위빙은 이러한 프록시 객체를 생성하고, 타겟 메서드를 호출하기 전후에 애스펙트에서 정의된 어드바이스(Advice)를 적용하는 과정을 말합니다. 이런 방식으로 스프링 AOP는 런타임에 동적으로 부가 기능을 타겟 객체에 연결하는 것을 가능하게 합니다.

이와 관련되어 두 개의 유사 질문 및 답변을 링크로 안내해드리겠습니다:
- AspectJ의 AOP 구현방식에 대해 질문드립니다.
- 안녕하세요! 질문이 있습니다.

해당 링크들은 AOP의 다른 구현 방식 및 스프링 AOP와 관련하여 더 깊이있는 설명을 제공합니다. 특히 첫 번째 링크에서는 AspectJ와 비교하며 AOP 구현 방식에 대한 설명이 있으며, 두 번째 링크는 AOP 적용 방식에 대한 내용이 있습니다. 이를 통해 AOP의 원리 및 스프링에서의 적용 방식에 대해 더욱 명확히 이해하실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.