스프링 애플리케이션을 구성할 때 가장 먼저 등장하는 존재가 바로 스프링 컨테이너다. 이 컨테이너는 개발자가 정의한 빈 객체들을 생성하고, 의존관계를 자동으로 주입해주는 중요한 역할을 담당한다.
요구사항
- 객체 간의 의존관계를 효율적으로 관리하고 싶다.
- 설정 정보를 기반으로 객체를 등록하고, 필요할 때 조회하고 싶다.
문제점
- 매번 객체를 생성하고 의존성을 수동으로 연결하는 건 비효율적이다.
- 프로젝트가 커질수록 객체 관리가 복잡해지고, 결합도가 높아진다.
개선 방향: 스프링 컨테이너 도입
스프링에서는 ApplicationContext라는 컨테이너를 통해 객체를 자동으로 생성하고 관리한다. 이를 위해 @Configuration과 @Bean을 활용하여 설정 정보를 기반으로 빈을 등록한다.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
위처럼 @Bean 메서드 이름이 빈의 이름이 되고, 반환되는 객체가 빈으로 등록된다. 그리고 빈 이름은 반드시 중복되지 않아야 한다!
설계 원칙 정리
- 스프링 컨테이너는 설정 클래스를 읽고, 빈 객체를 생성하고 등록한다.
- 등록된 빈들은 컨테이너에서 관리되고, 의존관계가 자동으로 연결된다.
- 생성자 호출 시점에 의존관계 주입도 함께 이루어진다.
- 빈 이름은 명확하고 중복되지 않게 설정해야 한다.
다음 편에서는 스프링 컨테이너에 등록된 빈을 어떻게 조회하는지, 그리고 ApplicationContext와 BeanFactory의 차이를 중심으로 더 깊이 있게 알아보려고 한다.
'Spring' 카테고리의 다른 글
[Spring 완전 정복 시리즈] 12편 - 다양한 빈 조회와 스프링 컨테이너의 숨겨진 기능들 (2) | 2025.07.27 |
---|---|
[Spring 완전 정복 시리즈] 11편 - 스프링 빈 조회와 ApplicationContext의 역할 (1) | 2025.07.27 |
[Spring 완전 정복 시리즈] 9편 - 스프링으로 전환하고 의존관계 주입 자동화하기 (1) | 2025.07.26 |
[Spring 완전 정복 시리즈] 8편 - AppConfig로 객체 지향 설계 완성하기 (0) | 2025.07.26 |
[Spring 완전 정복 시리즈] 7편 - DIP/OCP 위반 구조의 문제점 (1) | 2025.07.26 |