[영상후기][10분 테코톡] 주디의 Spring Bean

박철현·2023년 3월 24일
0

영상후기

목록 보기
53/160

movie

  • 스프링 빈 : 스프링 IoC 컨테이너가 관리하는 객체

  • 스프링 IoC 컨테이너 : 빈을 관리하는 객체

  • 의존성 주입

    • 직접 의존성 주입 : 어디선가 new 키워드 사용하여 객체 생성 필요
    • 의존성 주입을 위한 필요 객체 수가 많아 진다면 복잡성 커지고 중복 생성이 많아짐
    • 모든 의존관계를 파악해야 하는 번거로움이 생김
    • 많은 객체가 중복 생성될 수도 있음
       - A 생성 : B, C, D 필요
         - B 생성 : E, F 필요
         - E 생성 : .. 필요
      - ...
    • 빈으로 등록하여 스프링 IoC 컨테이너가 객체의 생성과 의존성 주입 관리필요
      • 주입된 의존성을 사용하는 것에만 집중할 수 있음
  • 스프링IoC 컨테이너 생성 -> 빈 스코프가 싱글톤인 객체 생성 -> 빈 데피니션 생성(어노테이션 또는 자바 컨피그 또는 XML 기반) -> 빈으로 등록할 POJO + 빈 데이피니션 정보를 이용하여 빈 생성(싱글톤이 아닌 평범한 자바 클래스 이용)

  • IoC 컨테이너 : 싱글톤 레지스트리 기능 존재

    • 빈 스코프가 싱글톤인 객체에 빈의 이름을 Key로, 객체를 value로 저장
    • 의존성이 주입 되어야하는 객체가 빈으로 등록되어 있을 때 스프링은 빈의 이름을 이용하여 항상 동일한 Single Object반환
  • 빈 객체가 생성 되면 IoC 컨테이너는 의존 설정을 한다.(의존성 자동 주입 일어남)

    • 초기화 과정 진행(필요시), 빈 사용 가능
  • 빈 설정시 주의점 : 빈 스코프를 싱글톤으로 가질 경우 상태를 가지면 안됨

    • ex) 스레드 1에서 증가 / 스레드 2에서 get -> 얻어올 때마다 상태가 달라짐
  • 상태를 가질 수 있는 빈 : 생성, 존재, 적용 범위 지정 가능(빈 스코프)

    • @scope로 설정 가능
    • 디폴트는 싱글톤타입 / 프로토타입 이라는 스코프 있음
    • 프로토타입으로 생성할 경우 요청이 올 때마다 객체가 생성됨
    • 모든 스레드에서 공유하는 것이 아니므로 해당 객체는 상태를 가질 수 있음
  • 의존성을 자동 주입 해야 할 인터페이스에 구현체가 두 개 이상이라면 어떤 구현체를 주입할지 몰라 충돌이 일어남

    • 어노테이션 사용으로 우선순위 지정 가능
      • 의존성 주입 구현체 하나일 경우 @Primary 우선순위 지정하여 지정 가능
    • 상황에 따라 다른 구현체를 자동 주입 되도록 할 수 있음
      • 의존성 주입이 필요한 곳에 @Qualifier(빈이름) 어노테이션 사용하여 특정 구현체를 주입하도록 설정할 수 있음

  • 스프링 빈이 왜 필요할까? 스프링 IoC 컨테이너가 특정 객체의 라이프사이클을 관리한다는 것을 명시
    • 빈을 왜 관리? 의존성을 자동 주입하여 해당 의존성을 사용하는 로직에만 집중 가능
    • 의존성이 주입 될 객체가 싱글 오브젝트임을 보장
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보