기술면접

기술면접 : 스프링 + JPA (1/3)

더덕2 2023. 3. 27. 14:16

1.Spring DI/IoC는 어떻게 동작하나요?

IoC(제어의 역전)은 프로그램의 제어 흐름을 개발자가 제어하는 것이 아니라 프레임워크의 내부에서 결정되어서 이루어집니다.

DI(의존관계 주입)은 클래스 사이의 의존관계를 빈 설정 정보를 통해서 컨테이너가 자동으로 연결해줍니다.

스프링 컨테이너인 ApplicationContext를 이용하여 설정 정보를 생성,등록하고 생성자 or Setter를 통해 주입합니다.


2.Spring Bean이란 무엇인가요?

의존관계를 부여하는 오브젝트를 빈이라고 부릅니다.

IoC 컨테이너 내 존재하는 객체이고 IoC 컨테이너가 관리합니다.

@Bean을 사용하여 일반객체를 Bean으로 등록할 수 있습니다. 


3.스프링 Bean의 생성 과정을 설명해주세요.

객체 생성 -> 의존 설정 -> 초기화 -> 사용 -> 소멸 과정의 생명주기를 가지고 있으며 스프링 컨테이너에서 관리합니다.

생성한 객체를 빈에 등록할 때는 @Configuration의 @Bean을 사용하여 등록할 수 있습니다.

초기화 방법은 @PostConstruct를 사용하고

소멸시에는 @PreDestroy를 사용합니다.

 

4.스프링 Bean의 Scope에 대해서 설명해주세요.

빈 스코프는 빈이 존재할 수 있는 범위를 뜻합니다.

스코프의 종류로는 싱글톤,프로토타입,request, session, application 등이 있습니다.

싱글톤은 기본스코프이며 범위는 컨테이너의 시작과 종료까지 유지됩니다.

프로토타입은 빈의 생성과 의존관계 주입까지만 관여합니다.

request는 웹 요청이 들어오고 나갈때까지 유지하고

session은 웹 세션 생성,종료할 때 까지

application은 웹 서블릿 컨텍스트와 같은 범위로 유지 됩니다.


5.IoC 컨테이너의 역할은 무엇이 있을까요?

Application 실행 시 빈 객체를 관리 해주며 (생성,관계설정,사용,삭제)등 역할을 코드대신 스프링 컨테이너가 담당합니다.


6.DI 종류는 어떤것이 있고, 이들의 차이는 무엇인가요?

생성자 삽입, Setter를 이용하여 매서드 매개변수를 통한 삽입,  필드 주입이 있고

생성자 삽입은 호출 시점에 1번만 호출이 되며 불변,필수 의존관계에 사용합니다.

Setter주입은  선택,변경가능성이 있는 의존관계에 사용가능하고 스프링빈을 선택적으로 사용할 수 있습니다.

필드주입은 @Autowired을 사용하고 외부에서 변경이 불가능하여 테스트가 힘듭니다. 그렇기 때문에 DI프레임워크 없이 사용이 힘들며 애플리케이션과 관계가 없는 테스트코드나 @Configuration같은 스프링 설정 목적으로 사용합니다.


7.Autowiring 과정에 대해서 설명해주세요.

컨테이너에서 타입(인터페이스 또는 오브젝트)를 이용해 의존 대상 객체를 검색하고 할당할 수 있는 빈 객체를 찾아 주입합니다.

'기술면접' 카테고리의 다른 글

기술면접:스프링+JPA(3/3)  (0) 2023.03.31
기술면접 : 스프링 + JPA (2/3)  (0) 2023.03.29
기술면접 : JAVA(3/3)  (0) 2023.03.24
기술면접:JAVA(2/3)  (0) 2023.03.22
기술면접:JAVA(1/3)  (1) 2023.03.20