인프런 커뮤니티 질문&답변

세승님의 프로필 이미지
세승

작성한 질문수

스프링 핵심 원리 - 기본편

스코프와 프록시

프록시 객체는 싱글톤인가요?

해결된 질문

작성

·

725

1

다른 분들의 질문을 읽어보던중에, 같은 질문에 다른 답변이 달려있는게 있어서 여쭤봅니다.

"프록시 객체는 각 HTTP 요청마다 생성되는가?" 라는 질문에

https://www.inflearn.com/questions/618437

'각 요청마다 생성된다' 라고 답해져있고

https://www.inflearn.com/questions/348888

'프록시 객체는 한번만 생성된다'(맨밑에 있습니다) 라고 답해져있는데, 뭐가 맞는건가요?

그리고, 강의 교안 <9.빈 스코프>의 마지막 페이지(32페이지)에 보면 '마치 싱글톤을 사용하는 것 같지만 다르게 동작하기 때문에 결국에 주의해서 사용해야한다.' 라는 말이 있는데요.

이 말에 대해서 좀 더 설명을 해주셨으면 좋겠습니다. 만약 프록시 객체가 한번만 생성된다면, 그게 싱글톤으로 등록된 것이나 마찬가지인데, 왜 "싱글톤을 사용하는 것 같지만 다르게 동작"하는지 잘 모르겠습니다.

답변 1

1

현 강의의 프로젝트 예제를 실습한 결과 프록시 객체는 싱글톤으로 유지됩니다.

request 스코프일 경우를 생각한다면, 여러 요청이 들어왔을 때 각 요청들은 싱글톤인 프록시 객체들을 처음에 가져오지만 실제로 사용하게 되면 요청마다 스프링 빈 객체가 만들어지며 그것들을 사용하게 됩니다.

따라서 프록시 객체 때문에 싱글톤을 사용하는 것 같지만, 내부적으로는 scope의 종류(request, singleton, prototype ...) 에 따라 스프링 빈이 다르게 동작할 수 있기 때문에 그런 답변을 하신 것 같습니다.

예제와 답변들을 읽고 이해한 바를 적은 것이므로 틀린 점이 있으시다면 지적 부탁드립니다. 감사합니다.

김영한님의 프로필 이미지
김영한
지식공유자

nyximos님 답변 감사합니다^^

세승님의 프로필 이미지
세승

작성한 질문수

질문하기