티스토리 뷰
빈(Bean)이란?
Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부릅니다.
우리가 자바에서 new 연산자로 어떠한 객체를 생성했을 때 그 객체는 빈이 아닙니다.
ApplicationContext.getBean()으로 얻을 수 있는 객체가 빈입니다.
즉 Spring에서 빈은 ApplicationContext가 알고 있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고 있는 객체를 의미합니다.
빈(Bean)의 스코프
ㆍ싱클톤 - 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프입니다.
ㆍ프로토타입 - 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프입니다.
ㆍ웹 관련 스코프
1. request - 웹의 요청이 들오어고 나갈때 까지 유지되는 스코프
2. session - 웹의 세션이 생성되고 종료될 때 까지 유지되는 스코프
3. application - 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프
싱글톤 빈
ㆍ 싱글톤 빈은 클라이언트 A, B, C는 memberService를 요청해도 항상 같은 memberService를 반환한다.
결과 화면
bean1과 bean2를 출력해보면 같은 객체인 것을 확인해 볼 수 있습니다.
프로토타입 빈
ㆍ 1. 프로토타입 스코프 빈을 스프링 컨테이너에 요청
ㆍ 2. 스프링 컨테이너는 요청받은 시점에 프로토타입 빈을 생성하고, 필요한 의존관계를 주입
ㆍ 3. 스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에게 반환
ㆍ 4. 이후 스프링 컨테이너에 같은 요청이 들어오면 항상 새로운 프로토타입 빈을 생성해서 반환
* 정리 - 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리합니다. 클라이언트 빈을 반환하고, 이후 스프링 컨테이너는 프로토타입 빈을 관리하지 않습니다. 프로토타입 빈을 관리할 책임은 프로토타입 빈을 받은 클라이언트에게 있습니다. 그래서 @PreDestory 같은 종료 메서드가 호출되지 않습니다.
결과 화면
@Scope를 prototype으로 설정을 한다면 요청을 할 때 마다 프로토타입 빈이 생성되는 것을 알 수 있습니다.
또한 각각의 객체는 서로 다르며 @PreDestory를 애노테이션을 선언한 메서드는 호출이 안되는 것을 확인할 수 있습니다.
* 참고 @PreDestory를 선언한 메서드를 호출하고 싶다면 직접 선언을 하여 사용해야 합니다.
결과 화면
'JAVA > Spring' 카테고리의 다른 글
Spring - XML Collection List, Set, Map, Property 사용 방법 (0) | 2021.10.18 |
---|---|
Spring - Bean설정 시 생성자 인자 연결 (0) | 2021.10.18 |
Spring - 빈의 범위(Bean Scope) (0) | 2021.10.17 |
Spring - naverEmail 또는 gmail로 이메일 발송하기 (0) | 2021.07.08 |
Spring - dropzone을 이용한 파일 업로드 (0) | 2021.02.12 |
- Total
- Today
- Yesterday
- spring boot poi excel download
- 레이어드 아키텍처란
- spring boot redisson 분산락 구현
- redis 대기열 구현
- spring boot 엑셀 다운로드
- JDK Dynamic Proxy와 CGLIB의 차이
- 서비스 기반 아키텍처
- service based architecture
- java userThread와 DaemonThread
- 공간 기반 아키텍처
- spring boot redis 대기열 구현
- redis sorted set으로 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링부트
- polling publisher spring boot
- java ThreadLocal
- transactional outbox pattern
- spring boot redisson sorted set
- pipe and filter architecture
- microkernel architecture
- @ControllerAdvice
- spring boot excel download oom
- transactional outbox pattern spring boot
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- redis sorted set
- spring boot redisson destributed lock
- spring boot excel download paging
- space based architecture
- 자바 백엔드 개발자 추천 도서
- pipeline architecture
- 람다 표현식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |