개요
스프링 컨테이너 생성 코드
생성 코드
//스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
설명
ApplicationContext
- 이것을 스프링 컨테이너라 한다.
- 인터페이스이다.
- 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.
AppConfig
- 자바 설정 클래스를 의미한다.
자세한 것은 이전 게시글 참고
AnnotationConfigApplicationContext(AppConfig.class)
AnnotationConfigApplicationContext
는ApplicationContext
의 구현체이다.- 즉,
AppConfig
클래스가 자바 설정 클래스의 역할을 수행하기 때문에, 자바 설정 클래스를 기반으로 스프링 컨테이너를 만들었다고 할 수 있다.
스프링 컨테이너의 생성 과정
스프링 컨테이너 생성
new AnnotationConfigApplicationContext(AppConfig.class)
- 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다.
AppConfig.class
를 구성 정보로 지정했다.
스프링 빈 등록
- 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록 한다.
- 빈 이름
- 빈 이름은 메서드 이름을 사용한다.
@Bean
을 사용하면 빈이름이 자동으로 메서드 이름으로 설정된다.
- 빈 이름을 직접 부여할 수 도 있다.
@Bean(name="memberService")
를 사용하면 빈이름을 직접 설정할 수 있다.
- 빈 이름은 항상 다른 이름을 부여해야 한다.
- 같은 이름 부여시, 다른 빈이 무시되거나, 기존 빈을 덮어버리는 등의 문제가 발생한다.
- 빈 이름은 메서드 이름을 사용한다.
스프링 빈 의존관계 설정
-
준비
-
완료
- 스프링 컨테이너는 설정 정보 (
AppConfig.class
) 를 참고해서 의존관계를 주입한다. (DI)
스프링 자체는 원래 ‘빈생성’, ‘의존관계 주입’ 단계가 나누어져 있지만,
자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다.
(return new MemberServiceImpl( memberRepository() )
에서MemberServiceImpl
생성자와memberRepository()
메서드가 같이 호출되기 때문에 ) - 스프링 컨테이너는 설정 정보 (
- 본 게시글은 김영한님의 강의를 토대로 정리한 글입니다.
- 더 자세한 내용을 알고 싶으신 분들이 계신다면, 해당 강의를 수강하시는 것을 추천드립니다.