스프링 컨테이너와 빈(Bean) - Lifecycle Callback과 Scope
Computer Science/Spring Boot
지난 번에 Spring Bean이 어떻게 생성되는지 알아보았다. 이번엔 이 빈들이 어떻게 관리되는지 알아보자.Bean의 Lifecycle Callback데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 피료한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화과 종료 작업이 필요하다. 스프링에서는 이런 초기화 작업과 종료 작업을 어떻게 진행하는지 확인해보자. 예제로 외부 네트워크에 연결하는 객체인 NetworkClient를 생성한다고 가정하고 진행해보자. NetworkClient는 애플리케이션 시작 시점에 connect() 메서드를 호출해서 연결하고 애플리케이션이 종료되면 disconnect()를 호출해야한다고 가정해보자.public cl..
스프링 컨테이너와 빈(Bean) - 싱글톤과 의존관계 주입 방법
Computer Science/Spring Boot
싱글톤(Singleton) 컨테이너스프링의 컨테이너는 싱글톤 컨테이너라고도 부른다. 그 이유는 단순하게 컨테이너에서 객체들을 싱글톤으로 관리해주기 때문이다. 그럼 여기서 싱글톤이란 무엇인지 알아보자. 싱글톤(Singleton)싱글톤이란 하나의 클래스에서 단 하나의 객체 인스턴스만 생성하도록 보장하는 디자인 패턴이다.왜 이런 방식을 사용할까? 싱글톤이 아니라면 다음과 같은 상황이 일어날 수 있다.만약 여러 클라이언트가 memberService가 필요한 요청을 보냈다고 생각해보자. 그러면 스프링은 매 요청마다 memberService를 생성하고 응답을 보낼 것이다. 이런 방식은 사용자가 늘어나면 늘어날 수록 메모리 낭비가 심하다. 이것을 해결하기 위해 등장한 패턴이 바로 싱글톤 패턴이다. 그럼 어떻게 싱글톤..