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 |