영상 후기 - Spring Bean

‍bng4535·2023년 3월 18일
0

movie

스프링 빈

  • 스프링 IoC Container가 관리하는 객체

빈과 의존성 주입

  • 직접 의존성을 주입하려면 의존 관계를 파악하고 있어야 하므로 매우 복잡하고 많이 객체가 중복 생성됨
  • 의존성 주입이 필요한 객체를 bean으로 등록하면 IoC Container가 알아서 객체를 생성하고 의존성을 주입
  • 스프링 IoC 컨테이너가 특정 객체의 라이프 사이클을 관리
  • 의존성을 사용하는 로직에만 집중할 수 있다

빈과 싱글턴

  • 객체를 싱글턴으로 만들면 다형성을 이용하지 못함
  • 해당 객체가 공유 객체가 되므로 단위테스트가 어렵다

스프링 IoC에서 빈을 관리하는 방법

  • spring IoC 컨테이너가 생성될 때 Configuration Metadata(Annotation, Java config, Xml)를 로드
  • Configuration Metadata에 등록된 빈을 생성
  • 빈 생성 시점에서 해당 빈의 Scope(빈의 범위)를 확인하며 기본값으로는 싱글톤(Singleton)이 적용된다.
  • 만약, 해당 빈의 Scope가 싱글톤이면, 빈은 한 개만 생성된다. 그리고 생성된 빈은 Spring IoC 컨테이너에 등록된다.
  • 빈이 등록된 후, 필요한 곳에서 해당 빈을 가져다가 사용한다.
  • IoC컨테이너는 각 scope마다 Registry를 갖는다
  • key와 value형태로 데이터를 저장하고 빈의 이름을 key로, 객체를 value로 저장

빈 설정시 주의점

  • bean scope를 싱글턴으로 할 경우 상태를 가지면 안됨
  • bean은 생성, 존재, 적용되는 범위인 bean scope를 설정하면 요청이 올 때마다 새로운 객체를 생성하게 할 수 있음 ex) @Scope("prototype")
  • 의존성을 자동 주입해야할 인터페이스의 구현체가 여러개일 경우 충돌
  • annotation을 활용하면 의존성 주입시 우선순위를 정할 수 있음 ex) @Primary , @Qualifier
profile
공부 기록

0개의 댓글