개발놀이터

면접 준비 : 스프링 DI 본문

CS 지식/면접준비

면접 준비 : 스프링 DI

마늘냄새폴폴 2022. 11. 30. 23:32

Q. DI가 뭔가요?
A. DI는 스프링 프레임워크에서 지원하는 IoC의 형태로 클래스 사이의 의존 관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 의미합니다. 스프링에서는 스프링 컨테이너 ApplicationContext를 이용하여 설정 정보를 생성, 등록하고 필요한 객체를 생성자 혹은 setter 를 통해 주입하거나 필드에서 주입합니다.

Q. DI의 종류는 어떤 것이 있고 이들의 차이는 무엇인가요? / 주입하는 방법들에 대해서 설명해주세요
A. DI를 통해 주입하는 방법에는 세 가지 방법이 있습니다. 생성자 주입, setter를 이용한 주입, 필드 주입이 있습니다. 생성자 주입은 생성자 호출 시점에 딱 한번만 호출되는 것을 보장하며 불변, 필수 의존관계에서 사용합니다. setter 주입은 선택, 변경 가능성이 있는 의존 관계에서 사용되며 스프링 빈을 선택적으로 등록이 가능합니다. 필드 주입은 필드에 선언한 객체를 @Autowired 어노테이션을 붙여 직접 주입 받는 것을 말합니다. 이렇게 필드로 주입하는 경우 외부에서 변경이 불가능하여 테스트 하기가 힘들고, DI 프레임워크 없이는 작동하기 힘들기 때문에 애플리케이션과 관계 없는 테스트 코드에서 주로 사용합니다.