Today I Learned_220811
Spring Framework
스프링 빈 스코프
- 싱글톤 : 기본적으로 생성되는 스코프
- 프로토타입 : 스프링 컨테이너가 의존관계를 주입해주고 초기화 메소드를 불러서 클라이언트에 반환하는데 까지 관리하는 범위의 스코프
- 웹 관련 스코프 : 스프링 웹과 관련된 기능이 들어가야 쓸 수 있는 스코프
- request : 고객의 요청이 들어올 때 생성되고 나갈때 요청이 destroy되는 스코프
- session : 보통 로그인에 많이 사용. 세션이 생성되고 종료될 때 까지 유지되는 스코프
- application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프
prototype scope
빈 조회 시..
싱글톤 : 항상 같은 인스턴스의 스프링 빈 반환
프로토타입 : 항상 새로운 인스턴스 생성해서 반환
스프링 컨테이너는 프로토타입 스코프 빈을 생성, 의존관계 주입, 초기화까지 처리하고 그 이후 로직을 처리하지 않는다.
-> 그래서 @PreDestroy같은 종료 메소드가 호출되지 않음
-> 클라이언트에서 직접 종료 메소드를 호출해 줘야 함
싱글톤 빈 요청 flow
- 빈을 스프링 컨테이너에 요청
- 컨테이너가 관리하고 있는 스프링 빈 반환 -> 이미 생성된 빈 반환
- 이후 오는 요청 - 같은 객체 인스턴스의 스프링 빈 반환
프로토타입 빈 요청 flow
- 빈을 스프링 컨테이너에 요청
- 컨테이너는 빈 생성 후, 의존관계 주입 -> 이 때 빈을 생성
- 생성한 빈을 클라이언트에 반환
- 이후 오는 요청 - 요청이 올 때 마다 새로운 프로토타입 생성 후 반환