- 스프링 빈은 기본적으로 싱글톤 스코프로 설정된다. 하지만 필요에 따라 비싱글톤이 필요한 경우도 많다. 스프링이 지원하는 Bean Scope의 종류에 대해 알아보자!
Scope의 종류
- 싱글톤 스코프: 스프링에서 기본으로 설정되는 스코프. 스프링 컨테이너의 시작부터 종료까지 하나의 객체로 유지된다.
- 프로토타입 스코프: 스프링 컨테이너는 프로토타입 스코프의 생성과 의존관계 주입, 초기화까지만 관여한다. 이후로 더 관여하지 않고, 프로토타입을 받은 클라이언트가 객체를 관리해야 한다. 따라서 @PreDestroy 같은 종료 메소드가 호출되지 않는다. 또한 싱글톤과는 다르게 요청이 오면 계속 새로운 객체를 생성 후 반환한다.
- 웹
reqeust: 각각의 요청이 들어오고 나갈때까지 유지된다.
session: 세션이 생성되고, 종료될 때까지 유지된다.
application: 웹의 서블릿 컨텍스트와 같은 범위로 유지된다.
Bean Scope 등록하기
1. 자동으로 등록
먼저 singletone scope의 경우 default값이기 때문에 별다른 scope 설정은 필요없다.
@Component
public class singletoneBean{
//생략
}
그 외에는 @Scope("scope type name") 으로 설정해줄 수 있다.
@Scope("prototype")
@Component
public class prototypeBean{
//생략
}
2. 수동으로 등록
@Scope("prototype")
@Bean
public class prototypeBean{
PrototypeBean prototypeBean(){
return new prototypeBean();
}
}
@Bean, @Scope 명시 후 생성자로 PrototypeBean을 반환해준다.
'SERVER > Spring' 카테고리의 다른 글
[spring-core-1] 스프링 핵심 원리 이해 (0) | 2022.04.06 |
---|---|
[Spring] Component와 @ComponentScan (0) | 2021.09.14 |
[Spring] Bean Life Cycle(생명주기) (0) | 2021.09.11 |
[Spring] 스프링에서 의존성을 주입하는 방법 (0) | 2021.09.10 |
[Spring] IoC와 DI (0) | 2021.09.09 |