면접준비

[면접준비] Spring

개발자 문문 2025. 9. 17. 10:22

1. Spring 이란?

- Spring은 자바 기반의 경량 애플리케이션 프레임워크로, IoC와 DI를 활용하여 객체 간 결합도를 낮추고 테스트와 유지보수를 쉽게 할 수 있게 해주는 프레임워크입니다.

 

2. IoC란?

- IoC는 제어의 역전으로, 객체의 생성과 의존성 관리를 개발자가 직접 하지 않고, 스프링 컨테이너가 제어권을 가져 관리하는 설계 원칙입니다.

 

3. DI란?

- DI는 객체가 필요로 하는 의존 객체를 외부에서 주입해 주는 방식으로, IoC를 구현하는 핵심 기술 중 하나이며, 이를 통해 객체 간 결합도를 낮출 수 있습니다.

 

4. 디스패처 서블릿(Dispatcher Servlet) 이란?

- 스프링 MVC에서 모든 클라이언트 요청을 중앙에서 받아 처리하는 프론트 컨트롤러로, 요청을 적절한 컨트롤러로 전달하고, 결과 뷰를 반환하는 역할을 합니다.

- 클라이언트의 요청이 들어오면 DispatcherServlet이 이를 먼저 받고, HandlerMapping을 통해 어떤 컨트롤러가 요청을 처리할지 결정합니다. 결정된 컨트롤러는 HandlerAdapter를 통해 실행되고, 컨트롤러는 비즈니스 로직을 처리한 후 ModelAndView 객체를 반환합니다. DispatcherServlet은 반환받은 ModelAndView에서 논리적 뷰 이름을 꺼내어 ViewResolver를 통해 실제 뷰 객체를 찾습니다. 마지막으로 해당 뷰 객체를 랜더링하여 클라이언트에게 응답을 보냅니다.

 

5. 디스패처 서블릿으로 인한 web.xml 역할 축소

- 스프링 부트 이전에는 web.xml에서 서블릿, 필터, 리스너를 정의했지만, 디스패처 서블릿이 요청을 중앙 집중적으로 처리하면서 web.xml에서 설정해야 할 내용이 대폭 줄고 대부분 자바 코드 또는 어노테이션으로 대체되었습니다.

 

6. AOP란?

- AOP는 공통 기능(로깅, 트랜잭션)을 핵심 비즈니스 로직에서 분리하여 모듈화하는 프로그래밍 기법으로, 코드 중복을 줄이고 유지보수를 용이하게 합니다.

 

7. AOP 용어 설명

- Apsect(관점) : 공통 기능 모듈

- Advice(조언) : 실제 공통 기능 구현 코드

- Pointcut(지점) : Advice가 적용될 위치

- Join Point(조인 지점) : 메서드 실행 등 AOP가 적용될 수 있는 지점

- Weaving(위빙) : Advice를 핵심 로직에 적용하는 과정

 

8. AOP 사용 경험 : 공통 로그 구현

- 프로젝트에서 서비스 메서드 실행 전후로 로그를 남기는 공통 기능을 AOP로 구현하여, 각각의 메서드에 중복 코드를 작성하지 않고 로그를 일괄 처리했습니다.

 

9. 필터와 인터셉터의 차이

- 필터는 서블릿 요청과 응답 전후에 동작하며, 주로 보안, 인코딩 처리에 사용되고, 스프링과 독립적입니다.

- 인터셉터는 스프링 MVC 컨트롤러 실행 전후에 동작하며, 주로 로그인 체크, 요청/응답 로깅, 컨트롤러 단에서의 공통 처리를 담당합니다.

 

10. 스프링과 스프링 부트 차이

- 스프링은 프레임워크 자체만 제공하고 설정이 필요하지만, 스프링 부트는 자동 설정, 내장 서버, 스타터 패키지를 제공하여 빠른 애플리케이션 개발을 지원합니다.

 

11. 스프링 어노테이션

- 스프링에서 클래스, 메서드, 필드에 부여하여 IoC, DI, MVC, 트랜잭션 등 다양한 기능을 선언적으로 적용하는 메타데이터입니다.

 

12. 스프링 버전별 기능

- 스프링 2.x는 XML 기반 설정, 3.x는 어노테이션 기반 DI, 4.x는 Java 8 지원 및 REST 지원 강화

- 5.x는 리액티브 프로그래밍(WebFlux) 지원, 최신 6.x는 Jakarta EE 호환과 최신 JVM 기능 활용을 특징으로 합니다.

 

13. MVC1 과 MVC2 차이

- MVC 1은 JSP가 컨트롤러와 뷰를 동시에 담당하며, 로직과 화면이 결합되어 유지보수가 어렵습니다.

- MVC 2는 디스패처 서블릿 중심의 분리 구조로, 컨트롤러와 뷰가 분리되어 테스트와 유지보수가 용이합니다.

 

14. ORM

- 객체와 관계형 데이터베이스 테이블 간 매핑을 통해 SQL을 직접 작성하지 않고 객체 지향적으로 DB를 처리할 수 있는 기술입니다.

 

15. JPA

- 자바 표준 ORM API로, 엔티티 객체와 데이터베이스 테이블을 매핑하여 CRUD를 추상화하고, 다양한 구현체(Hibernate)와 호환됩니다.

 

16. ORM, JPA, Hibernate의 장단점

- ORM은 객체 중심 개발로 생산성과 유지보수가 용이하지만, 복잡한 쿼리에서 성능 저하가 있을 수 있습니다.

- JPA는 표준 API이므로 구현체 변경이 용이하고 Hibernate는 기능이 풍부하지만 특정 구현체에 종속될 수 도 있습니다.

 

17. MyBatis란?

- SQL은 XML 또는 어노테이션으로 직접 작성하고, 자바 객체와 매핑해주는 퍼시스턴스 프레임워크로, SQL 제어가 자유롭고 성능 최적화가 쉽습니다.

 

18. MyBatis와 JPA의 차이

- MyBatis는 SQL 중심, 개발자가 직접 쿼리를 작성하며 성능 제어가 자유롭고, JPA는 객체 중심으로 SQL이 자동 생성되며 객체지향적 개발과 유지보수에 유리합니다.

 

19. Spring JDBC

- JDBC API를 스프링에서 래핑하여, 반복되는 연결, 쿼리 실행, 예외 처리 등을 간소화하고 예외를 스프링 예외 계층으로 통일한 데이터 접근 방식입니다.

 

20. DAO와 DTO란?

- DAO는 데이터베이스와의 CRUD를 담당하는 객체이고, DTO는 계층 간 데이터 전달용 객체로, 보통 필드와 getter/setter만 포함합니다.

'면접준비' 카테고리의 다른 글

[면접준비] WEB  (2) 2025.09.17
[면접준비] 네트워크  (0) 2025.09.17
[면접준비] DB  (0) 2025.09.17
[면접준비] JAVA  (0) 2025.09.16
[면접준비] 운영체제  (0) 2025.09.16