스프링 컨테이너

Ena JJJ·2023년 1월 24일
0

Spring

목록 보기
4/44

스프링 컨테이너

  • 'ApplicationContext'를 스프링 컨테이너라 한다.
  • 기존에는 개발자가 'AppConfig'를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다.
  • 스프링 컨테이너는 '@Confuguration'이 붙은 'AppConfig'를 설정(구성)정보로 사용한다. 여기서 '@Bean'이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
  • 스프링 빈은 '@Bean'이 붙은 매서드의 명을 스프링 빈의 이름으로 사용한다. ('memberService','orderService')
  • 이전에는 개발자가 필요한 객체를 'AppConfig'를 사용해서 직접 조회했지만, 이제부터는 스프링 컨테이너를 통해서 필요한 스프링 빈(객체)를 찾아야 한다. 스프링 빈은 'applicationContext.getBean()'메서드를 사용해서 찾을 수 있다.
  • 기존에는 개발자가 직접 자바코드로 모든 것을 했다면 이제부터는 스프링 컨테이너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경되었다.

#어떤 장점이 있을까?(코드가 복잡해진 것 같은데?..)

스프링 컨테이너 생성


ApplicationContext applicationContext =
			new AnnotationConfigApplicationContext(AppConfig.class);
  • 'ApplicationContext'를 스프링 컨테이너라 한다.
  • 'ApplicationContext'는 인터페이스이다.
  • 스프링 컨테이너는 XML을 기반으로 만들 수 있고, Annotation 기반의 자바 클래스로 만들 수 있다.
  • 직전에 'AppConfig'를 사용했던 방식이 Annotation 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다.
  • 자바 설정 클래스를 기반으로 스프링 컨테이너('ApplicationContext')를 만들어 보자.
    -'new AnnotationConfigApplicationContext(AppConfig.class)';
    • 이 클래스는 'ApplicationContext'인터페이스의 구현체이다.

참고

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

스프링 컨테이너의 생성 과정



참고

스프링 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다. 그런데 이렇게 자바코드로 스프링 빈을 등록하면 생성자를 호출하면서 의존관계 주입도 한번에 처리된다. 여기서는 이해를 돕기 위해 개념적으로 나누어 설명했다. 의존관계 주입에서 다시 보자.

출처:https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

0개의 댓글