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

이현준님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 고급편

필드 동기화 - 동시성 문제

싱글톤 빈에서의 필드 변수를 사용에도 불구하고 동시성 문제가 일어나지 않습니다.

작성

·

233

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
강의를 보고 코딩을 해서 실행을 해보니깐 싱글톤 빈을 사용함에도 불구하고 로컬 쓰레드 환경처럼 서로 값에 영향이 가지 않는 예제와 다른 결과가 나왔습니다. 혹시나 제가 잘못 코딩을 하여 이런 결과가 나온 것인지 소스 코드를 이용해서 FieldLogTrace를 사용하여 예제를 실행해보았지만, 결과는 똑같이 서로 영향을 미치지 않는 결과가 나왔습니다. 스프링이 최신 버전(테스트 기준 3.3.0)으로 업데이트가 되면서 이와 관련해서 따로 바뀐 부분이 있는지 궁금합니다.

답변 3

0

저도 비슷한 경험을 해서 확인을 해봤는데...

알고보니 제 실수였습니다 😂😂

url을 v3 호출해야되는데 v2로 호출하셨을지도...

다른분들도 헷갈리지 않으시기를..

 

http://localhost:8080/v2/request?itemId=hello

http://localhost:8080/v3/request?itemId=hello

0

안녕하세요. 이현준님, 공식 서포터즈 y2gcoder입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

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

이현준님의 질문은 매우 흥미롭습니다.

스프링에서 싱글톤 빈이 각각의 요청에 독립적으로 동작하는 것처럼 보이는 경우, 주로 스프링의 스코프와 라이프사이클 관리 덕분입니다. 특히, 싱글톤 빈 내에 상태를 저장하는 필드가 있는 경우 동시성 문제가 발생할 수 있으나, 스프링은 이러한 문제를 해결하기 위해 여러 가지 기술을 제공합니다. 예를 들어, Request 스코프 빈 사용, 프록시 모드 등을 통해 동시성 문제를 회피할 수 있습니다.

스프링 프레임워크의 최신 버전(3.3.0 기준)에서 싱글톤 빈의 동작 방식에 대한 근본적인 변경은 없습니다. 다만, 스프링 버전이 업데이트되면서 성능 개선이나 새로운 기능이 추가된 것은 사실입니다. 그러나 이러한 변경 사항들이 싱글톤 빈의 동시성 관리 기본 원칙에 큰 영향을 미치지는 않습니다.

제공하신 정보만으로는 정확한 원인을 파악하기 어렵습니다만, 싱글톤 빈에서 각각의 요청이 서로 영향을 미치지 않는 것처럼 보인다면, 스프링이 제공하는 스코프 기반의 빈 관리 방식 또는 별도의 설계 패턴(예: ThreadLocal을 사용하는 방식 등)을 사용하고 있을 수 있습니다. 이와 관련된 구체적인 코드 구현 방식이나 설정을 다시 확인해 보시길 권장드립니다.

더 깊이 있는 답변을 원하시면, 구체적인 코드 예시와 함께 질문을 남겨주시면 더 자세히 알아볼 수 있을 것 같습니다.