4. 스프링 컨테이너와 스프링 빈

2023. 8. 3. 02:26·Spring/기본

1. 스프링 컨테이너 생성

 

1) 개념

 

- ApplicationContext 를 "스프링 컨테이너" 라 한다.

- ApplicationContext 는 인터페이스다.

- 스프링 컨테이너는 XML 기반으로도 (new GenericXmlApplicationContext("appConfig.xml")),

                                 애노테이션 기반의 자바 설정 클래스 (new AnnotationConfigApplicationContext(AppConfig.class))로

                                 만들 수 있다.

 

* 정확히는 스프링 컨테이너를 BeanFactory, ApplicationContext로 구분하지만,

BeanFactory를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext를 스프링 컨테이너라 한다.

 

 

 

2) 내부 동작

 

- AppConfig.class 를 구성 정보로 활용하여, 스프링 컨테이너를 생성하고, 스프링 빈을 등록한다.

 

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

 

 

 

 

 

 

 

2. 컨테이너에 등록된 빈 조회

 

1)  '스프링 빈' 조회 방법

 

- ac.getBean(빈 이름, 타입)

- ac.getBean(타입)

    → 동일한 타입의 스프링 빈 객체가 여러 개가 있으면, 이름까지 명시해주어야 함

    → 모두 조회하고 싶으면 .getBeansOfType(CLASS TYPE)

 

애플리케이션 빈 출력하기

 

 

 

 

 

 

 

3. 스프링 컨테이너 내부 구조

 

1)  구성 정보, Config의 구현

 

BeanFactory

- 스프링 컨테이너의 최상위 인터페이스

- 스프링 빈을 관리하고 조회하는 역할 => ex. getBean()

 

ApplicationContext

- BeanFactory 기능을 모두 상속받아 제공

- 추가적인 부가 기능... (나중에 공부)

 

ApplicationContext_Impl

- 애노테이션 기반 자바 코드 설정

- XML 기반 설정 

 

 

 

 

2) BeanDefinition Type (역할)

 

> 코드 레벨로 더 들어가면...

(javac : .java → .class     kotlinc : .kt → .class 와 비슷..?)

(각각의 컴파일러, Reader가 있다고 생각하고 최종적으로 바이트코드 .class, BeanDefinition을 만드는 흐름)

 

- 스프링 컨테이너는 BeanDefinition (역할) 밖에 모른다.

   애플리케이션의 구성정보가 Annotation 기반 자바 코드인지, XML 기반인지.. (구현) 모른다.

  

 

- 스프링 컨테이너 ApplicationContext의 구현체인 각각의 ...ApplicationContext가 ...Reader를 사용해서

   AppConfig.class / "appConfig.xml" 의 설정 정보를 읽고 BeanDefinition (빈 메타정보) 을 생성한다.

 

BeanDefinition_meta data 출력

 

'Spring > 기본' 카테고리의 다른 글

6. 컴포넌트 스캔  (0) 2023.08.04
5. 싱글톤 컨테이너  (0) 2023.08.04
3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용  (0) 2023.07.21
2. 스프링 핵심 원리 이해1 - 예제 만들기  (0) 2023.07.20
1. 객체지향 설계와 스프링  (0) 2023.07.18
'Spring/기본' 카테고리의 다른 글
  • 6. 컴포넌트 스캔
  • 5. 싱글톤 컨테이너
  • 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용
  • 2. 스프링 핵심 원리 이해1 - 예제 만들기
wch_t
wch_t
  • wch_t
    끄적끄적(TIL)
    wch_t
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (171)
      • Architecture (0)
      • Algorithm (67)
        • Math (5)
        • Simulation (1)
        • Data Structure (4)
        • DP (7)
        • Brute Fource (10)
        • Binary Search (6)
        • Greedy (2)
        • Graph (11)
        • Mst (1)
        • Shortest path (10)
        • Two Pointer (1)
        • Tsp (3)
        • Union Find (2)
        • Mitm (1)
      • CS (2)
        • 데이터베이스 (5)
        • 네트워크 (5)
      • DB (6)
      • DevOps (17)
        • AWS (9)
        • Docker (1)
        • CI-CD (5)
      • Error (1)
      • Project (0)
        • kotrip (0)
      • Spring (59)
        • 끄적끄적 (5)
        • 기본 (9)
        • MVC 1 (7)
        • MVC 2 (11)
        • ORM (8)
        • JPA 1 (7)
        • JPA 2 (5)
        • Spring Data Jpa (7)
      • Test (2)
      • TIL (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    apache poi
    Merge
    Sxssf
    response_mode
    docker: not found
    애플
    백준 17289 파이썬
    Jenkins
    백준 17299 파이썬
    docker
    scope
    백준 3015 파이썬
    view algorithm
    spring-cloud-starter-bootstrap
    aws secrets manager
    spring-cloud-starter-aws-secrets-manager-config
    TempTable
    form_post
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
wch_t
4. 스프링 컨테이너와 스프링 빈
상단으로

티스토리툴바