Spring Bean : Spring IOC 컨테이너가 관리하는 객체
Spring IOC 컨테이너 : Bean을 관리하는 객체
Bean과 Dependency 자동주입
객체를 빈으로 등록하지 않고 의존성 주입을 사용한다면 어디에선가 new 키워드를 사용해서 객체를 생성해야 함.
의존성 주입 시 여러 개의 의존성이 필요하다면 해당 의존성의 주입 순서를 알아야 함.
직접 의존성을 주입하기 위해서는 많은 의존관계를 모두 파악해야하는 번거로움이 발생, 또한 중복생성되는 객체도 생김.
Bean과 Singleton
Singleton pattern의 단점
1. 다형성을 이용하지 못함. (생성자의 접근제어자를 private로 지정해야 하므로 상속이 불가)
2. 단위 테스트가 어려움.(Singleton pattern으로 구현하게 될 경우 해당 객체는 공유 객체가 되므로 단위 테스트시 순서에 따라 결과가 달라짐)
Spring IOC Container가 Bean을 관리하는 방법
객체 생성 -> 프로퍼티 생성 -> 의존성 설정 -> 초기화 -> 사용 -> 소멸
Bean 설정 시 주의점