관리 메뉴

진취적 삶

6.3 빈 객체의 생성과 관리 범위 본문

스프링 5 프로그래밍 입문/6.빈 라이플사이클봐 범위

6.3 빈 객체의 생성과 관리 범위

hp0724 2023. 9. 6. 00:10
Client client1 = ctx.getBean("client",Client.class)
Client client2 = ctx.getBean("client",Client.class)
//client1 == client2  true 

한 식별자에 대해 한 개의 객체만 존재하는 빈은 싱글톤 범위를 갖는다.

빈의 범위를 프로토타입으로 지정하면 빈 객체를 구할때마다 매번 새로운 객체를 생성한다.

프로토타입 생성

@Bean 
@Scope("prototype") 
public Client client() {
	Client client = new Client() 
	client.setHost("host")
	return client ;
}

싱글톤의 경우

@Bean 
@Scope("singleton") 
public Client client() {
	Client client = new Client() 
	client.setHost("host")
	return client ;
}

그러나 defualt 값이 싱글톤이기 때문에 따로 설정 안해줘도 됨

프로토 타입 범위를 갖는 빈은 완전한 라이플 사이클을 따르지 않는다는 점에 주의해야 한다.

스프링 컨테이너는 프로토 타입의 빈 객체를 생성하고 프로퍼티를 설정하고 초기화 작업까지는 수행하지만, 컨테이너를 종료한다고 해서 생성한 프로토타입 빈 객체의 소멸 메서드를 실행하지는 않는다.