티스토리 뷰
[면접 준비 - Spring]Spring Boot, AOP, REST Docs
Vagabund.Gni 2022. 12. 9. 19:40목차
Spring Boot
스프링 부트는 복잡한 세팅과 구성을 개발자 대신 간결하게 처리하는 스프링 프로젝트 중 하나다. 구체적으로는
- 복잡한 .xml 파일에서 .yml 파일로의 전환
- build.gradle을 통한 의존 라이브러리 버전 자동 관리
- starter 모듈 의존 라이브러리를 통한 앱 및 앱을 띄울 서블릿 컨테이너 자동 구성
- .jar 파일로의 빌드를 통해 바로 실행 가능한 파일 생성
- 내장 WAS(Web Application Server, 혹은 서블릿 컨테이너)를 통한 손쉬운 배포
가 그 특징이라고 할 수 있다.
+) 서블릿 컨테이너 - 클라이언트의 요청을 처리하고 반환하는 서블릿의 실행 및 생명주기를 관리하는 역할
Spring AOP
AOP(Aspect Oriented Programming)는 직역하면 관심 지향 프로그램으로서, 객체 지향 프로그래밍을
구현 혹은 보완하는 프로그래밍 방식 중 하나다. 구체적으로는 앱을 관통하는 보안, 로깅, 통계 등의 관심사를
한 곳에 모아 모듈화 함으로써 관리 및 변화의 편의성과 재사용성의 증가 및 메서드 복잡도 하락과 중복 코드의 방지, 이어서 그에 따라오는
핵심기능에 대한 집중도 증가로 나타나게 된다.
추가로 AOP와 비슷하게 공통사항을 처리할 수 있는 기능에는 필터와 인터셉터가 존재하는데,
셋의 가장 큰 차이점은 스프링 일처리 흐름에서의 위치이다.
단순하게 말하면 클라이언트의 요청이 들어오면 Filter → Interceptor → AOP → Interceptor → Filter의 순서로 작동하지만,
AOP의 조인 포인트 설정에 따라 인터셉터와 AOP의 순서는 바뀔 수 있다.
Spring REST Docs
Spring REST Docs는 작업의 통일성과 개발자의 협업에 있어 가장 중요한 API 문서를 자동으로 만들어주는 도구이다.
다른 도구인 Swagger와는 다르게 테스트를 기반으로 한 문서 작성 도구라는 것이 특징이며, 이 점에서 TDD와 접점이 있다.
여기서 테스트 기반이란 테스트에 통과한 기능만 API 문서에 등록된다는 뜻이며,
핸들러 메서드에 대한 테스트 코드 작성 -> 테스트 실행 -> 성공 후 Snippet 파일 생성 -> Snippet을 모아 API 문서 생성
의 과정을 거친다.
여기서 핵심은 컨트롤러 클래스의 슬라이스 테스트가 다른 계층의 코드를 호출하지 않는 것인데,
이를 위해 @MockBean을 통해 모킹 객체를 주입하게 된다.
'Development > Technical Interview' 카테고리의 다른 글
[면접 준비 - Java]JVM 구조(2), Runtime Data Area (0) | 2022.12.11 |
---|---|
[면접 준비 - Network]Polling, WebSocket(+STOMP), SSE (2) | 2022.12.10 |
[면접 준비 - Cloud]AWS EC2, S3, RDS, 그리고 (1) | 2022.12.09 |
[면접 준비 - Cloud]PaaS, Docker, 그리고 (2) | 2022.12.09 |
[면접 준비 - Java]JVM 구조(1), JVM Workflow (8) | 2022.10.30 |
[면접 준비 - Java]메서드 오버로딩 vs. 메서드 오버라이딩 (2) | 2022.10.25 |
- Total
- Today
- Yesterday
- 세모
- 맛집
- 남미
- BOJ
- Algorithm
- Backjoon
- 동적계획법
- 스프링
- 면접 준비
- 칼이사
- 기술면접
- 세계여행
- 유럽여행
- 리스트
- 여행
- 세계일주
- 지지
- Python
- 파이썬
- spring
- a6000
- RX100M5
- 스트림
- java
- 유럽
- 자바
- 야경
- 백준
- 알고리즘
- 중남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |