Spring Container 톺아보기

강정우·2023년 10월 31일
0

Spring-boot

목록 보기
6/73
post-thumbnail

스프링 컨테이너 생성

스프링 컨테이너가 생성되는 과정

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext스프링 컨테이너라 한다.

  • ApplicationContext인터페이스다. => 다형성이 적용되어있다.

  • 스프링 컨테이너는 XML을 기반으로 만들수 있고(거의 사용 X), 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.

  • 직전에 AppConfig를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.

  • 자바 설정 클래스를 기반으로 스프링 컨테이너 ApplicationContext를 만들어보자.

    • new AnnotationConfigApplicationContext(AppConfig.class);
    • 이 클래스는 ApplicationContext 인터페이스에 구현체이다.

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

1. 스프링 컨테이너 생성

  1. new AnnotationConfigApplicationContext(AppConfig.class)
  • 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야한다.
  1. 여기서는 AppConfig.class를 구성 정보로 지정했다.

2. 스프링 빈 등록

  • 스프링 컨테이너는 파라이터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.

  • @Bean 이름은 default로 메서드 이름을 사용하는데 앞서 언급했던 것 처럼 이름을 직접 부여할 수 있다.
    @Bean(name="memberService2")
    이때 이름은 unique하게 부여해야한다. 만약 이름이 중복되는 경우 다른 빈이 무시되거나 기존 빈을 덮어써버려서 설정에 따라 오류가 생길 수 있다.

실무에서는 최대한 단순하게, 명확하게 해결해야 좋다.

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

4. 스프링 빈 의존관계 설정 - 완료

  • 스프링 컨테이너는 설정 정보를 참고하여 의존관계 주입(DI)을 한다.

  • 단순히 자바 코드를 호출하는 것 같지만, 차이가 있다.

  • 처음에 스프링은 빈을 생성하고, 그 후, DI를 하는 단계가 나누어져 있다.
    그런데 편리하게도 이렇게 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 DI도 한번에 처리된다.

즉, 스프링 컨테이너를 생성하고, 설정(구성) 정보를 참고해서 스프링 빈도 등록하고, 의존관계도 설정했다.

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글