movie

Spring Bean : Spring IOC 컨테이너가 관리하는 객체
Spring IOC 컨테이너 : Bean을 관리하는 객체

Bean과 Dependency 자동주입
객체를 빈으로 등록하지 않고 의존성 주입을 사용한다면 어디에선가 new 키워드를 사용해서 객체를 생성해야 함.
의존성 주입 시 여러 개의 의존성이 필요하다면 해당 의존성의 주입 순서를 알아야 함.
직접 의존성을 주입하기 위해서는 많은 의존관계를 모두 파악해야하는 번거로움이 발생, 또한 중복생성되는 객체도 생김.

Bean과 Singleton
Singleton pattern의 단점
1. 다형성을 이용하지 못함. (생성자의 접근제어자를 private로 지정해야 하므로 상속이 불가)
2. 단위 테스트가 어려움.(Singleton pattern으로 구현하게 될 경우 해당 객체는 공유 객체가 되므로 단위 테스트시 순서에 따라 결과가 달라짐)

Spring IOC Container가 Bean을 관리하는 방법
객체 생성 -> 프로퍼티 생성 -> 의존성 설정 -> 초기화 -> 사용 -> 소멸

Bean 설정 시 주의점

  • Bean 스코프를 Singleton으로 설정할 경우 상태를 가지면 안 됨.
  • Bean 스코프를 프로토타입으로 설정하면 요청이 올때마다 객체가 생성. 모든 스레드에서 공유하는 것이 아니므로 해당 객체는 상태를 가질 수 있음.
  • 의존성을 자동주입하는 인터페이스의 구현체가 두 개 이상이면, 어떤 구현체를 선택할 지 몰라서 충돌이 일어남.
  • 어노테이션을 사용해서 의존성 주입시 우선 순위를 정할 수 있음.
  • 의존성을 자동주입 해야하는 구현체가 하나일 경우 @Primary를 붙이면 의존성 주입시 해당 구현체를 사용함.
  • 의존성 주입이 필요한 곳에 @Qualifier를 사용하면 특정 구현체를 주입하도록 설정 가능.
profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글