일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- 쓰레드 #쓰레드풀 #프로세스
- 썸네일 #이미지
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- 비트 #바이트 #이진수
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 프로세스 #CPU #시공유 #커널
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- Today
- Total
요리사에서 IT개발자로
(스파르타 코딩클럽) 면접 예상 질문 Spring MVC패턴 본문
1. 클라이언트 요청 (Client Request)
사용자가 브라우저 또는 REST 클라이언트(예: Postman)를 통해 특정 URL로 API 요청을 보냅니다. 이 요청은 HTTP 요청으로 표현됩니다.
2. 디스패처 서블릿 (DispatcherServlet)
요청이 웹 서버(Tomcat, Jetty 등)에 도착하면, 이 요청은 Spring의 DispatcherServlet으로 전달됩니다. DispatcherServlet은 요청을 처리하는 핵심 역할을 하는 프론트 컨트롤러로, Spring MVC의 진입점 역할을 합니다.
- DispatcherServlet의 역할: DispatcherServlet은 요청을 받고, 적절한 컨트롤러(Controller)에 요청을 전달하며, 컨트롤러의 결과를 받아서 적절한 뷰(View)로 응답을 생성합니다.
3. 핸들러 매핑 (Handler Mapping)
DispatcherServlet은 요청 URL에 따라 어떤 컨트롤러가 이 요청을 처리할지 결정하기 위해 HandlerMapping을 사용합니다.
- HandlerMapping: Spring은 URL과 컨트롤러 메서드를 매핑하기 위해 다양한 HandlerMapping 구현체를 사용합니다. 가장 일반적인 것은 RequestMappingHandlerMapping으로, @RequestMapping이나 @GetMapping, @PostMapping 등으로 정의된 URL을 매핑합니다.
4. 컨트롤러 (Controller) 호출
HandlerMapping에 의해 적절한 컨트롤러가 결정되면, 해당 컨트롤러의 메서드가 호출됩니다.
- 컨트롤러 역할: 컨트롤러는 비즈니스 로직을 호출하고, 필요한 데이터를 처리한 후 응답 데이터를 준비합니다. 이때, 컨트롤러는 일반적으로 서비스 계층(Service Layer)을 호출하여 비즈니스 로직을 수행합니다.
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
}
이 코드에서 getUser 메서드는 /api/users/{id} 경로로 들어온 GET 요청을 처리합니다.
5. 서비스 계층 (Service Layer)
컨트롤러는 비즈니스 로직을 수행하기 위해 서비스 계층을 호출합니다.
- 서비스 계층 역할: 서비스 계층은 실제 비즈니스 로직이 구현되는 곳입니다. 예를 들어, 데이터베이스에서 사용자 정보를 조회하거나, 트랜잭션 관리, 다른 비즈니스 규칙을 적용하는 등의 작업을 수행합니다.
@Service
public class UserService {
public User findById(Long id) {
// 데이터베이스에서 사용자 정보 조회
return userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id));
}
}
6. 데이터 접근 계층 (Data Access Layer)
서비스 계층이 데이터베이스와 상호작용할 필요가 있다면, Spring Data JPA와 같은 데이터 접근 계층을 통해 데이터베이스와 상호작용합니다.
- Repository 역할: Spring Data JPA에서는 Repository 인터페이스를 통해 데이터베이스 작업을 수행합니다. 이 인터페이스는 CRUD(Create, Read, Update, Delete) 작업을 쉽게 처리할 수 있게 해줍니다.
public interface UserRepository extends JpaRepository<User, Long> {
}
7. 응답 처리 (Response Handling)
컨트롤러에서 서비스 계층을 통해 필요한 작업을 완료한 후, 결과를 반환합니다. 이때, 컨트롤러는 ResponseEntity나 단순히 객체를 반환하여 Spring이 자동으로 JSON이나 XML 등의 형식으로 변환해 클라이언트에 전달할 수 있도록 합니다.
- ViewResolver 또는 HttpMessageConverter: Spring은 ViewResolver를 사용해 뷰(View)를 결정하거나, REST API의 경우 HttpMessageConverter를 사용하여 객체를 JSON이나 XML로 변환합니다.
@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
이 메서드는 User 객체를 JSON 형식으로 클라이언트에 반환합니다.
8. 디스패처 서블릿에서 응답 반환 (Response Dispatch)
모든 작업이 완료되면, DispatcherServlet은 최종 응답을 클라이언트로 반환합니다. 이 응답은 웹 서버를 통해 사용자의 브라우저나 REST 클라이언트에 전달됩니다.
간략한 정리
- 클라이언트 요청: 사용자 → 웹 서버
- DispatcherServlet: 요청 처리 시작
- Handler Mapping: 적절한 컨트롤러 매핑
- Controller: 비즈니스 로직 호출
- Service Layer: 비즈니스 로직 수행
- Data Access Layer: 데이터베이스와 상호작용
- Response Handling: 응답 생성 및 변환
- 응답 반환: 클라이언트로 응답 전송
'TIL' 카테고리의 다른 글
JWT 어디에 보관해야할까?? (LocalStorage, SessionStorage, Cookie) (2) | 2024.09.05 |
---|---|
Spring Security h2 페이지 접근 허용하는 방법 (0) | 2024.09.04 |
(스파르타 코딩클럽) 면접예상질문 Spring AOP란? (0) | 2024.08.13 |
(스파르타 코딩클럽)Vue.js 와 SpringBoot 네이버 소셜로그인 연동하기 (0) | 2024.08.10 |
(스파르타 코딩클럽) 스프링 시큐리티에서 JWT토큰 인증을 어떻게 할까? (0) | 2024.08.03 |