SEB_BE_43 / 23.02.06 회고

rse·2023년 2월 6일
0

코드스테이츠_BE_43

목록 보기
29/65
post-thumbnail

오늘

  • Spring Framework의 핵심개념
  • 스프링 컨테이너

DI

지난번 02.02일 블로그 포스트에도 DI를 작성했지만 헷갈리는 나를 위해 다시 정리하자면

IoC는 원칙 중 하나이고 DI는 IoC라는 원칙을 이루기 위한 디자인 패턴 중 하나이다.

저번 블로그 예제였던 파인트로 예제를 들자면

IoC : 파인트가 스스로 맛을 결정하지 못한다는 추상적인 개념. 누가 어떤 방식으로 맛을 채우는지는 중요하지 않음.

DI : 파인트의 맛을 외부에서 넣어준다는 구체적인 행위이다.

스프링 컨테이너 (Spring Container)

빈의 생명주기를 담당. (생성, 관리, 제거 등)

ApplicationContext 을 스프링컨테이너 라고 하고 인터페이스로 구현이 되어 있다. (다형성 적용)

왜 사용하는가?

02.02일 블로그

위 블로그 DI 부분에서도 설명했지만

  • 객체를 참조하기 위해 new 생성자를 사용해야 했다.
  • 애플리케이션에서 이러한 객체가 무수히 많이 존재하고 서로 참조하게 되어있었다. (의존성)

그래서 객체 간의 의존성을 낮추기 위해 스프링컨테이너 가 사용된다.

종류

BeanFactory

스프링 컨테이너의 최상위 인터페이스이다.
BeanFactory는 빈을 등록, 생성, 조회, 돌려주는 등 빈을 관리하는 역할을 함.
getBean() 메서드를 통해 빈을 인스턴스화 할 수 있다.
@Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용해 "빈 등록" 을 한다.

ApplicationContext

BeanFactory의 기능을 상속받아 제공한다.
빈을 관리하고 검색하는 기능을 BeanFactory가 제공하고 그 외에 부가기능을 제공한다.
부가 기능
	- MessageSource: 메세지 다국화를 위한 인터페이스
    - EnvironmentCapable: 개발, 운영 등 환경변수 등으로 나눠 처리하고, 애플리케이션 구동 시 필요한 정보들을 관리하기 위한 인터페이스
    - ApplicationEventPublisher: 이벤트 관련 기능을 제공하는 인터페이스
    - ResourceLoader: 파일, 클래스 패스, 외부 등 리소스를 편리하게 조회

ApplicationContext는 인터페이스로, 구현할 때에는 newAnnotatonConfigApplication Context(클래스이름.class) 를 사용한다.

Spring Bean 조회에서 상속관계가 있을 시에, 부모타입으로 조회하면, 자식 타입도 함께 조회한다. 그래서 모든 자가 객체의 최상위인 Object 타입으로 조회하면 모든 스프링 빈을 조회한다.

빈(Bean)

profile
기록을 합시다

0개의 댓글