[Spring] 스프링 컨테이너와 스프링 빈

jy9922·2022년 8월 19일
0

Spring

목록 보기
21/34
post-thumbnail

스프링 컨테이너와 스프링 빈 🥜

스프링 컨테이너 생성

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

// 스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext를 스프링 컨테이너라 한다.
    • ApplicationContext는 인터페이스!
  • 스프링 컨테이너는 XML 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. ( 요즘은 XML 기반 거의 X )
  • 직전에 AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 생성한 것이다.
  • 자바 설정 클래스를 기반으로 스프링 컨테이너(ApplicationContext)를 만들어 봅시다!
    • new ApplicationConfigApplicationContext(AppConfig.class);
    • 이 클래스는 ApplicationContext 인터페이스의 구현체!

참고

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

스프링 컨테이너 생성 과정

1. 스프링 컨테이너 생성

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

2. 스프링 빈 등록

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

    빈 이름 🥜

    • 빈 이름은 메서드 이름을 사용한다.
    • 빈 이름을 직접 부여할 수도 있다.
      • @Bean(name="memberService2")

    🚨주의🚨

    빈 이름은 항상 다른 이름으로 부여해야 한다. 같은 이름을 부여하면, 다른 빈이 무시되거나, 덮어버리거나 설정에 따라 오류가 발생한다.

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

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

  • 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입(DI)한다.
    • 동적인 객체 인스턴스 의존관계를 스프링이 설정해준다.
    • 스프링 빈이 객체의 참조값들이 연결된다.
  • 단순히 자바 코드르 호출하는 것 같지만, 차이가 있다.
    • 싱글톤 컨테이너에서 설명하는 차이
      (링크)

참고

  • 스프링 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다.
  • 그런데 이렇게 자바 코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다.
    의존관계 자동 주입에 대해서 알아두자..!
    (링크)

0개의 댓글