[Spring] Bean과 DI(의존성 주입)란? - Bean 생명주기, 생성자 / setter /필드 주입 정리
by 우와한개발자
[ Bean 과 DI(의존성 주입) ]
1. 빈(Bean)이란
- Spring 컨테이너가 생성하고 관리하는 객체
- 자바 객체는 스프링 컨테이너가 관리할 수 있도록 Bean으로 등록을 해야함
- 빈(Bean)은 XML 파일, 어노테이션, 자바 설정파일 방식으로 등록가능
| 주입 방식 | XML | 어노테이션 | Java Config |
| 생성자 주입 | ⭕ | ⭕ | ⭕ |
| setter 주입 | ⭕ | ⭕ | ⭕ |
| 필드 주입 | ❌ | ⭕ | ❌ |
2. 빈(Bean) 생명주기
빈 정의 → 빈 생성 → 의존성 주입 → 초기화 → 사용 → 소멸
- 정의 : XML 설정파일, 자바 기반 설정 클래스, 어노테이션 방식으로 정의함.
- 생성 : 스프링 컨테이너가 정의된 빈을 싱글톤으로 생성해 재사용함.
- 초기화 : afterPropertiesSet()이나 @PostConstructor 등으로 초기화 작업을 수행함
- 소멸 : destroy()나 @Predestroy 등으로 컨테이너 종료시 소멸 처리를 수행함
3. 빈 스코프(Scope)
- 빈이 생성되고 유지되는 범위를 지정하는 설정
| 스코프 | 설명 |
| singleton | 컨테이너당 1개 인스턴스 (기본값) |
| prototype | 요청할 때마다 새 객체 생성 |
| request | HTTP 요청 단위 (웹) |
| session | HTTP 세션 단위 (웹) |
4. 의존성 주입(DI)이란
- 객체가 필요로 하는 의존 객체를 직접 생성하지 않고, 스프링 컨테이너가 외부에서 찾아서 주입해주는 방식
- DI를 사용하면 모듈 간의 결합도를 낮출 수 있고, 테스트와 유지보수가 쉬워짐
- 주입 방식은 세 가지이며, 설정 방식(XML / 어노테이션 / Java Config)에 따라 사용 가능 여부가 다름
1) 설정 방식별 주입 가능 여부
| 주입 방식 | XML | 어노테이션 | Java Config |
| 생성자 주입 | ⭕ | ⭕ | ⭕ |
| setter 주입 | ⭕ | ⭕ | ⭕ |
| 필드 주입 | ❌ | ⭕ | ❌ |
2) 주입 방식 종류
- 생성자 주입 : 생성자 파라미터로 의존 객체를 전달받는 방식. 가장 권장
- setter 주입 : setter 메서드로 의존 객체를 전달받는 방식. 선택적 의존성에 사용
- 필드 주입 : 필드에 직접 @Autowired를 붙여 주입받는 방식. 비권장
| 항목 | 생성자 주입 | setter 주입 | 필드 주입 |
| 불변성 보장 | O | X | X |
| 순환 참조 감지 | O | X | X |
| 테스트 용이성 | 높음 | 보통 | 낮음 |
| 코드 간결성 | 보통 | 보통 | 높음 |
| 권장 여부 | 권장 | 선택적 의존성에 사용 | 비권장 |
'프레임워크 > Spring' 카테고리의 다른 글
| [Spring] Bean 등록과 의존성 주입(DI) 설정 - 어노테이션(Annotation) 방식 (0) | 2026.03.27 |
|---|---|
| [Spring] Bean 등록 과 의존성 주입(DI) 설정 - XML 방식 (0) | 2026.03.26 |
| [Spring] 스프링 IoC 컨테이너란? - BeanFactory, ApplicationContext 정리 (0) | 2026.03.26 |
| [Spring] 스프링 프레임워크(Spring Framework)란? - IoC / DI / AOP / POJO 개념 정리 (0) | 2026.03.26 |
| [Spring] Spring Boot에서 JAR와 WAR 차이 정리 (0) | 2026.01.19 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자