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

명아주님의 프로필 이미지
명아주

작성한 질문수

스프링 핵심 원리 - 고급편

필드 동기화 - 동시성 문제

이런 경우에 @RequestScope를 사용하면 어떨까요?

작성

·

557

1

안녕하세요. 초보개발자 명아주입니다!
 
계속 싱글톤을 강조하면서 말씀해주셔서 이런 문제가 예상되었고
저는 해결책으로 @RequestScope를 이용해서 LogTrace Bean 자체를 request 마다 생성하도록 하는 방법을 생각했었습니다.
실제 테스트해본 결과, 의도한 대로 동작하는 것도 확인하긴 했습니다.
 
아직 경험이 부족하여 어떤 장단점이 있을지 모르겠어서 이렇게 질문작성하고 마저 다음 강의를 들으러 가겠습니다!
다음 강의에서 그 답이 나올지도 모르겠다는 생각이 들긴 하네요.
 
감사합니다!
 

답변 2

3

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

안녕하세요. 명아주님

다음을 참고해주세요.

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

감사합니다.

명아주님의 프로필 이미지
명아주
질문자

항상 다른 질문 먼저 확인하고 글 남기는 편인데 이번엔 놓쳤나봅니다. 똑같은 질문이있었네요.. 좋은 답변 감사합니다~

3

명아주님의 프로필 이미지
명아주
질문자

자문 자답일 수도 있는데 여러가지 검색해본 결과

RequestScope 를 이용해서 Bean 을 생성하는 것은 Reflection 을 활용하는 것이기 때문에, 접근 방식이 더 느리다는 답을 얻었습니다. 그리고 ThreadLocal에서는 캐싱이 포함되어 있어 재사용시 확실히 더 빠르다는 이야기도 있었습니다.다만, 뒤에 말씀해주시는 remove()를 꼭 호출해서 쓰레드로컬 변수를 지워주어야 할 것 같습니다. 이게 매우 번거롭기 때문에 인터셉터의 afterCompletion()을 활용하면 좋다는 의견도 있었습니다. 또는 필터를 쓰는게 좋다는 의견도 있네요.

아직 경험이 부족해서 어떤 방식을 적용해야될지는 모르겠지만 계속해서 강의를 들어보겠습니다!

감사합니다.

명아주님의 프로필 이미지
명아주

작성한 질문수

질문하기