Back-End/Spring

[Spring][스프링 기본편] - 11. 스프링 컨테이너 생성과 스프링 빈 조회하기

얄루몬 2022. 1. 23. 17:53

1. 스프링 컨테이너란?

스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 합니다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 그리고 저번 시간에 배웠던 IoC와 DI의 원리가 이 스프링 컨테이너에 적용됩니다.

📌출처: https://steady-coding.tistory.com/459

 

 

 

스프링 컨테이너의 종류

  • ApplicationContext(일반적으로 스프링 컨테이너라고 하면 애플리케이션컨텍스트를 생각하면 된다.)
  • BeanFactory

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmvhPF%2Fbtq7nFvUcmb%2F8Q9MOlg2hN02l3smRKA7wK%2Fimg.png

 

 

2. 스프링 컨테이너의 생성

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class)
  • ApplicationContext 
    • 스프링 컨테이너 
    • 인터페이스
  • AnnotationConfigApplicationContext(AppConfig.class)
    • ApplicationContext의 구현체
    • AnnotationConfigApplicationContext로 객체 생성 후
    • AppConfig.class를 매개변수로 넘겨준다.
  • 스프링 컨테이너를 XML로도 생성할 수 있지만 요즘은 Annotation기반의 스프링 컨테이너를 사용하는 추세이다. 

 

 

3. 스프링 컨테이너 생성과 스프링 빈의 설정 과정

  • 스프링 컨테이너 생성
  • 스프링 빈 등록(설정 클래스에 있는 @Bean 붙은 메소드들을 호출해서 메소드 이름을 key로 넣어준다.)
  • 스프링 빈 의존관계 설정
  • 스프링 빈 의존관계 설정 확인 (Test 작업)

 

 

4. 스프링 빈이란?

스프링에 의해서 생성되고 관리되는 자바 객체를 Bean이라고 한다. 스프링 프레임워크에서는  Spring Bean 을 얻기 위하여 ApplicationContext.getBean() 와 같은 메소드를 사용하여 Spring 에서 직접 자바 객체를 얻어서 사용합니다.

📌출처: http://melonicedlatte.com/2021/07/11/232800.html

 

 

5. 스프링 빈 조회하기

  • 컨테이너에 등록한 모든 빈 조회
    • 인터페이스로 조회
      • 구현체가 대상이 된다.
    • 타입으로 조회
      • 동일 타입이 겹칠 때 문제가 생기기에 이를 처리하기 위해 이름을 지정해서 조회해주면 된다.
    • 구체 타입으로 조회
      • 역할에 의존해야 하는데 구현에 의존해야 해서 좋은 방법은 아니다.
      • 유연성이 떨어진다.
  • 동일 타입이 2개 이상일 경우엔?
    • 빈 이름을 지정해주면 해결 된다.
  • 상속 관계일 땐?
    • 부모 타입을 조회할 땐 부모 타입과 더불어 연관된 자식타입을 모두 조회한다.
    • Object 타입을 조회할 땐 우리가 설정한 관계와 더불어 스프링 자체에서 연관시킨 모든 타입을 조회할 수 있다.
      • Object는 객체의 최고 조상으로 자바 객체는 모두 Object이기 때문에 이와 같이 조회가 되는 것이다.
    • 자식이 둘 이상일 때 처리는?
      • 이름을 지정해주면 해결 된다.
  • 이때도 구체적인 객체 설정은 좋지 않다. 

 

 

6. 출처

https://inf.run/7GX1

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢

www.inflearn.com