더북(TheBook)

앱에서는 싱글톤 빈을 주로 사용한다. 동일한 이름으로 참조하는 모든 곳에서 동일한 객체 인스턴스를 얻기 때문에 여러 스레드가 이 인스턴스를 액세스하여 사용할 수 있다. 따라서 인스턴스는 불변으로 만들면 좋다. 하지만 빈 속성에 대해 변경 작업을 수행하고 싶다면 스레드 동기화를 처리하는 것은 사용자 책임이다.

빈처럼 변경 가능한 객체가 필요하면 프로토타입 스코프를 사용하는 것이 좋은 방법이 될 수 있다.

프로토타입 스코프의 빈을 싱글톤 스코프의 빈에 주입할 때는 주의해야 한다. 이렇게 하면 싱글톤 인스턴스는 항상 동일한 프로토타입 인스턴스를 사용하게 된다. 스프링이 싱글톤 인스턴스를 생성할 시점에 동일한 프로토타입 인스턴스를 주입하기 때문이다. 이는 일반적으로 악성 설계다. 빈을 프로토타입 스코프로 만드는 이유는 사용할 때 항상 독립된 인스턴스를 얻어야 하기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.