Spring은 객체의 생성과 의존성 관리를 자동화하여, 유연하고 확장 가능한 애플리케이션을 쉽게 개발할 수 있게 해주는 자바 기반 프레임워크
Spring에서 Bean을 생성, 관리, 주입, 소멸까지 담당하는 객체 관리 엔진
| 역할 | 설명 |
|---|---|
| Bean 등록 | 설정 정보(@Configuration, @ComponentScan 등)을 읽어 Bean 정의 등록 |
| Bean 생성 | new 연산 대신 컨테이너가 객체 생성 |
| 의존성 주입 | @Autowired 등으로 Bean 간 연결 |
| 생명주기 관리 | 생성 → 주입 → 초기화 → 소멸 |
| AOP 적용 | 트랜잭션, 로깅 등 공통 기능 자동 주입 |
메모리 누수 방지, 일관된 자원 관리, 수명 주기 제어 용이
스프링 IoC 컨테이너에 의해 관리되는 객체
*Spring에서 관리받지 않는 일반 객체(new로 생성된)는 Bean이 아님.
| 방법 | 설명 |
|---|---|
@Component | 기본적인 자동 등록 |
@Service, @Repository, @Controller | 역할 구분을 위한 특화된 Component |
@Configuration + @Bean | 수동 등록 (직접 인스턴스 반환) |
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemberRepository();
}
}
| 방식 | 특징 |
|---|---|
| 생성자 주입 (권장) | 불변성 보장, 테스트 용이 |
| 필드 주입 | 간단하지만 테스트 어려움 |
| Setter 주입 | 선택적 의존성 주입 가능 |
| 스코프 | 설명 |
|---|---|
singleton | 컨테이너 내 하나의 인스턴스 (기본값) |
prototype | 요청마다 새 객체 생성 |
request | HTTP 요청 단위 (웹) |
session | 세션 단위 (웹) |
생성 → 의존성 주입 → 초기화(@PostConstruct) → 사용 → 소멸(@PreDestroy)