본문 바로가기
Spring

(Spring) 스프링 컨테이너 / 스프링 빈

by windy7271 2022. 6. 30.
728x90
반응형

스프링 컨테이너 생성

ApplicationContext 를 스프링 컨테이너라 하고 인터페이스다. >> 다형성이 적용 되어있다. 

xml기반으로 만들 수 있고, 에노테이션 기반의 자바 설정 클래스를 만들 수 있다.

 

더 정확히는  스프링 컨테이너를 BeanFactory   /   ApplicationContext 로 구분해서 말한다.

보통은 ApplicationContext 를 스프링컨테이너

 

 

1. 컨테이너 생성

new AnnotationConfigApplicationContext(AppConfig.class)

Application 인터페이스의 구현체

1. appconfig에 정보를 준다.
2. 컨테이너가 만들어진다.
3. key는 빈 이름 value 는 빈 객체
4. appconfig.class구성 정보 활용


스프링 컨테이너를 생성할 때 구성 정보를 지정해주어야 한다.

 

2. 스프링 빈 등록

- 빈 이름은 메소드명 / 직접 부여 가능 @Bean(name="~~")

- 빈 이름은 항상 다른 이름을 부여 해야함 같으면 덮어버리거나 설정에 따라 오류 발생

 

자바의 보통 객체가 스프링 컨테이너에 의해서 관리되면 그것은 스프링 빈 이다

 

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

 - 의존관계를 넣어줌

출처: 김영한 스프링 핵심원리

 

memberService, orderserivce > MemberRepository

orderService > discountPolicy

> 의존관계 주입 DI

스프링은 빈 생성/ 의존관계 주입하는 단계가 나누어져 있음 빈을 등록하면 생성자를 호출하면서 의존관계 주입을 한번에 처리한다.

 

부모 타입으로 조회시, 자식 타입도 함께 조회된다.

모든 자바 객체의 최고 부모는 Object >> object 타입으로 조회하면 모든 스프링 빈을 조회한다.

 

 

 

BeanFactory

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

 - 스프링 빈을 관리, 조회

 

ApplictionContext

- BeanFactory기능을 상속 받아 사용

 

차이??

app 을 개발할 때 빈은 관리하고 조회하는 기능은 물론, 수 많은 부가기능이 필요하다

 

 ApplictionContext 가 제공하는 부가기능

 

1.  메세지 소스를 활용한 국제화 기능

2. 환경변수  : 로컬,개발, 운영 등을 구분해서 처리

3. 애플리케이션 이벤트  이벤트를 발행하고 구독하는 모델을 편리하게 지원

4. 편리한 리소스 조회

 

즉 ApplictionContext 는 위에 BeanFactory 말고 4가지를 더 상속받는다.

 

-스프링 빈 설정 메타 정보 : BeanDefinition 

 

스프링 >> 다양한설정 형식 지원 그 중심에는 BeanDefinition 이라는 추상화  >> 역할과 구현을 개념적으로 나눔

스프링 컨테이너는 BeanDefinition 만 알면됨

스프링 컨테이너는 메타정보 기반으로 스프링 빈을 생성한다.

 

 

 

 

 

 

 

 

반응형

댓글