↩뒤로가기

@Configuration //이게 Annotation기반으로 구성한 것이다.
public class AppConfig {

    @Bean
    public MemberService memberService(){
        return new MemberServiceImpl(memberRepository());
    }
}

자바 설정 클래스 기반으로 스프링 컨테이너 만들기

//스프링 컨테이너 생성
ApplicationContext applicationContext = 
new AnnotationConfigApplicationContext(AppConfig.class);
//ApplicationContext 인터페이스의 구현체
//매개변수 (AppConfig.class) 부분은 구성정보라고도 한다.
//어떤 정보를 바탕으로 컨테이너를 생성할지를 정하는 것.

<aside> 💡 더 정확히는 스프링 컨테이너를 부를 떄 BeanFactory, ApplicationContext로 구분해서 이야기한다. BeanFactory를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext를 스프링 컨테이너라 한다.

</aside>

스프링 컨테이너 생성 과정

앞서 작성한 코드를 도식화하면 다음과 같다.

  1. 스프링 컨테이너 생성

Untitled

  1. 스프링 빈 등록

Untitled

스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈을 등록한다. 여기서 빈 이름은 기본적으로 메소드 이름을 사용하지만, 따로 부여할 수도 있다.

<aside> 💡 빈 이름은 중복되면 안된다. 처음부터 메소드 이름을 중복되지 않도록 설계를 해서 오류를 방지하는 게 좋다.

</aside>

  1. 스프링 빈 의존관계 설정 - 준비