작성
·
355
0
이미 logDemo() 메소드가 실행되는 시점에 request 스코프가 주입되는 것이 아닌 것인지 궁금합니다.
request : 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프
프록시 모드를 테스트할 때 위와 같이 myLogger를 조회합니다.
허나 이 때는 이미 request를 통해 http요청을 받았을 때입니다.
제 생각에는 http 요청을 받았으니 이미 프록시 객체가 request 빈 스코프로 대체가 되어야한다고 생각이 드는데 출력에서 프록시 객체가 출력이 됩니다.
이미 logDemo() 메소드가 실행되는 시점에 request 스코프가 주입되는 것이 아닌 것인지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
request 빈은 웹 요청마다 생성되고 관리되는 스코프입니다. 따라서 이미 http 요청을 받았을 때 프록시 객체가 출력되는 것은 맞습니다.
하지만 logDemo() 메소드가 실행되는 시점에 request 스코프가 주입되는 것은 아닙니다. 스프링은 AOP를 이용해 프록시 객체를 생성하여 스코프를 관리하는데, 이때 프록시 객체가 처음 사용될 때 실제 빈이 생성되어 주입되고, 이후에는 프록시 객체를 통해 빈이 관리되는 것입니다.
따라서 logDemo() 메소드가 실행되는 시점에는 이미 빈이 생성되어 있는 상태이며, 이를 통해 request 스코프가 관리되고 있는 것입니다.
참고하시길 바랍니다. 감사합니다.
그러면 위 사진같이 myLogger을 출력 했을 때는 왜 REQUEST 스코프가 아닌 프록시 객체가 출력이 되는 걸까요?