작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
31
·
수정됨
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요 강사님
훌륭한 강의 항상 잘 보고 있습니다.
다름이 아니라, 이번에 빈 후처리기와 프록시 패턴에 대해 질문이 있습니다.
아래와 같이 빈 후처리기에서 A 객체를 A 프록시로 바꿔치기 해서 스프링 빈에 저장하고, A 프록시를 싱글톤으로 관리한다라고 이해했습니다.
이때, 궁금한 부분이
A 프록시가 A 객체를 상속받아서, 부가기능인 advisor 기능을 추가한 A 프록시라는 객체를 새롭게 생성해서 스프링 빈으로 등록을 한다라고 이해하면 되는건가요?
예를 들어, A 클래스가 A 메소드만 구현한 클래스라면
A 프록시 객체는 A메소드와 A advisor라는 부가기능이 추가된 클래스같은 형태로 구현되고, 스프링 빈으로 등록된다고 이해를 하면 되는건가요??
왜냐하면, 제가 이해한게 맞다면, 아래와 같이
proxy가 advisors를 호출한 뒤에, target을 호출한다는 개념이 잘 이해가 되질 않습니다.
proxy가 target의 비지니스 로직도 가지고 있고, advisor도 가지고 있는 객체라서 proxy에서 내부적으로 로직을 다 처리하면 되는 것 아닌가요??
설명 부탁드립니다 감사합니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. blackhole124님께서 질문 주신 내용은 스프링에서의 프록시 객체가 빈 후처리기를 통해 어떻게 생성되고, 그것이 어떤 식으로 동작하는지에 관한 것입니다.
빈 후처리기는 스프링 컨테이너에서 빈을 등록할 때 그 객체를 가로채고 새로운 프록시 객체로 대체할 수 있는 메커니즘을 제공합니다. 이렇게 생성된 프록시 객체는 원래 객체(A 객체)의 메서드를 호출하기 전후로 부가적인 로직을 추가하여 실행할 수 있습니다. 이를 통해 AOP(Aspect-Oriented Programming)의 다양한 기능들을 구현할 수 있습니다.
실제 프록시는 원래의 타겟 객체를 감싸고 있어서, 클라이언트가 요청을 할 때 이 프록시를 통해 타겟 객체의 메서드가 호출됩니다. 프록시는 리턴하기 전에 주어진 어드바이스(advice)를 처리할 수 있는 역할을 담당합니다.
프록시의 역할: 프록시는 스프링 컨테이너에 의해 생성되고, 클라이언트 요청을 받아서 어드바이스를 실행한 후 실제 비즈니스 로직인 타겟 객체의 메서드를 호출합니다. 이는 지정된 포인트컷(pointcut)이 매칭될 때만 실행됩니다.
프록시 구조 이해: 프록시는 타겟의 비즈니스 로직을 포함하고 있을 뿐 아니라, 어드바이저(advisor)를 통해 추가적인 로직(advice)을 실행할 수 있습니다. 이는 프록시가 실제 타겟 메서드가 호출되기 전후에 해당 조언을 실행함으로써 가능합니다.
프록시와 빈 후처리기의 작동 방식에 대한 보다 깊이 있는 이해를 돕기 위해 다음의 유사 질문들을 참고하세요:
이 질문들을 통해 프록시의 생성 시기, 방법, 그리고 이는 어떻게 빈으로 등록되는지를 보다 자세히 알게 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.