2022. 10. 26. 14:45ㆍSpring
해당 예시는 김영한님의 인프런 강의 중 [스프링 핵심 원리]를 바탕으로 합니다.
스프링 컨테이너와 스프링 빈
사용된 이미지는 김영한님의 인프런_[스프링 핵심 원리]에서 참고하였습니다.
스프링 컨테이너란 스프링을 통해 생성된 빈 객체를 생성하고 관리하는 공간이다.
ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
여기서 ApplicationContext가 스프링 컨테이너이다. 스프링 컨테이너를 생성하는 코드로서 애노테이션 기반의 자바 설정 클래스(AppConfig)를 생성자 파라미터로 던저줌으로서 그 정보를 가지고 스프링 컨테이너를 만든것이다.
BeanFactory도 스프링 컨테이너인데 ApplicationContext의 최상단으로 가보면 BeanFactory를 상속받고 있다. BeanFactory에서 여러 기능들이 추가된것이 ApplicationContext라고 간단히 설명할 수 있다.
자세한것은 BeanFactory와 ApplicationContext
이 때
- 설정정보 AppConfig에 설정을 구성한다는 뜻의 @Configuration 을 붙여준다.
- 객체로 생성될 각 메서드에 @Bean 을 붙여준다.
@Configuration과 @Bean을 사용해 스프링 컨테이너에 등록된 빈 확인
스프링 컨테이너의 생성과정
1) 스프링 컨테이너 생성
- 구성정보를 가지고(AppConfig) 스프링 컨테이너를 생성한다.
- 스프링 컨테이너는 내부에 빈 저장소가 있다.
2)스프링 빈 등록
- 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
- @Bean애노테이션이 붙은 메소드를 빈 객체로 등록한다.
- 메서드 이름이 빈 이름으로 등록된다.
빈 이름은 @Bean(name="memberService2") 처럼 직접 설정할 수도 있다.
주의
빈 이름은 중복되면 안됨!! => 같은 이름을 부여하면 다른 빈을 덮어버리거나 설정에 따라 오류 발생
3)스프링 빈의 의존관계 설정
빈이 모두 등록되면 그 후에 의존관계를 주입(DI)한다.
이렇게 스프링을 사용하여 빈을 등록하면 객체 생성과 의존관계 주입도 한번에 처리된다.
빈으로 등록되어 스프링 컨테이너에서 관리되는 객체는 순수 자바 코드로 생성된 객체보다 많은 이점을 가진다. 그 이점들은 이후에 차차 정리하겠다.
'Spring' 카테고리의 다른 글
BeanFactory와 ApplicationContext (0) | 2022.10.26 |
---|---|
스프링 Bean 조회 (0) | 2022.10.26 |
IOC와 DI (0) | 2022.10.26 |
SRP (0) | 2022.10.26 |
DIP와 OCP (0) | 2022.10.26 |