티스토리 뷰
스프링에서는 기본적으로 Singleton (이하 싱글톤) & Prototype(이하 프로토타입)의 빈 스코프를 지원한다. 웹 어플리케이션일 경우 추가적으로 요청, 세션, 전역 세션에 대해서 지원하지만 이번 포스팅에서는 싱글톤과 프로토타입에 대해서 언급하며 싱글톤 스코프의 빈이 프로토타입 스코프의 빈을 Autowired 할 경우와 프로토타입 스코프 빈이 프로토타입 빈을 Autowired 할 경우 어떤 일이 발생하는지에 대해서 설명한다.
싱글톤 빈 스코프는 XML설정 파일이나 어노테이션 설정 시 별 다른 설정이 없으면 Default로 잡히는 스코프이다. 싱글톤 스코프는 스프링 컨테이너가 생성 될 때 생성되고, 스프링 컨테이너가 내려가면 같이 없어지는 라이프 사이클을 가진다.
프로토타입 스코프의 경우에는 스코프가 프로토타입이라는 것을 명시적으로 나타내 주어야 한다. 위에서 싱글톤 스코프는 라이프사이클이 스프링컨테이너와 같았지만 프로토타입의 경우 스프링에서 인스턴스의 라이프 사이클을 관리 하지않는다고 한다.
그렇다면 이렇게 다른 스코프를 가진 두개의 빈을 서로 서로 의존성이 주입되면 어떤 일이 일어 날까?? 이것을 아는 것은 스프링을 사용해서 어플리케이션을 개발 할때 메모리 관리에 있어 수월함을 더해 줄 것이라고 생각한다.
먼저 싱글톤 스코프가 프로토 타입 스코프의 빈을 주입 받는 경우에 대한 내용이다.
1. Singleton Scope Controller
2. Prototype Scope Service
1번 싱글톤 스코프의 컨트롤러에서 프로토타입 스코프의 서비스를 Autowired하고 있을 때.
/scopeTest 호출을 두번 하게 되면 다음과 같은 결과 값을 확일 할 수 있다.
'Spring' 카테고리의 다른 글
Spring HttpSessionListener (2) | 2017.03.25 |
---|---|
Spring Security Custom EntryPoint (0) | 2016.12.28 |
JUnit 테스트 시 Spring 구동 및 Autowired하는 방법 (0) | 2016.11.15 |
SVG 이미지 변환 서버 만들기 (0) | 2016.09.10 |
@PostConstruct (0) | 2016.09.03 |