스프링 빈 스레드 세이프에 대하여

스프링 빈은 쓰레드 세이프하지 않다.

값이 변할 수 있는 인스턴스 멤버 변수가 존재한다면 쓰레드 세이프 하지 않는다. 그래서 무상태인 빈을 만들어야 한다.

해결 방법

1.지역 변수를 활용한다. (인스턴스 변수 사용 X, 인스턴스 변수는 읽기 전용에만 허용되도록 한다.)

2. (지역 변수로써 사용하고 싶지 않다면) scope 옵션을 prototype으로 한다.

기본적인 scope 설정은 singleton이기 때문에, 새로운 요청이 들어와도 하나의 빈 객체가 처리를 하게 된다. 이런 경우 scope 설정을 prototype으로 둔다면 매 요청시마다 새로운 객체가 생성된다. 하지만 매 요청시마다 객체가 새로 생성되기에 성능상 좋지 않다.