Dependency Injection
IoC는 다양한 방법으로 만들 수 있습니다. 전략 패턴, 서비스 로케이터 패턴, 팩토리 패턴 그리고 의존관계 주입패턴들이 있습니다. 객체를 주입받는 패턴을 생성자 주입 패턴 (Dependency Injection) 이라고 부릅니다. 그 외에도 스프링은 세터 기반의 의존관계 주입도 지원합니다.
컴포넌트 스캔으로 빈 등록하기
컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능입니다. 설정 클래스에 빈으로 직접 등록하지 않아도 원하는 클래스를 빈으로 등록학 수 있습니다. 그러면 스프링은 자동으로 등록될 빈을 어떻게 찾을까요? 바로 Stereotype 애노테이션을 이용 하면 스캔대상을 지정할 수 있습니다.
https://incheol-jung.gitbook.io/docs/q-and-a/spring/stereo-type
예시로 basePackageClasses를 사용하면 order, voucher가 속한 패키지를 기준으로 컴포넌트 스캔을 한다.
Autowired를 이용한 의존관계 자동 주입
생성자 기반 의존관계 주입을 선택해야 하는 이유?
@Primary와 @Qualifier 애노테이션을 이용한 의존관게 설정
자동 주입이 가능한 빈이 두개 이상이면 어떤 빈이 주입되야하는지 선택해야합니다. 안그러면 스프링은 무슨 객체를 주입해야하는지 모르기 때문에 애러가 발생합니다.
@Configuration 애노테이션 또한 컴포넌트 스캔의 대상이 되기 때문에 설정을 여러 파일로 분
리하고 메인이 되는 곳에서 컴포넌트 스캔으로 불러올 수도있다. 실제로 복잡한 상용 스프링 어플리케이션을 만들다보면 설정할 내용이 많기 때문에 여러 파일로 나누게 됩니다.
Bean Scope
스프링 공식문세어 보면 총 6개의 빈 스콥을 볼 수 있습니다. 기본적으론 싱글톤 스콥을 가집니다.