1. Springboot의 계층구조
클라이언트(요청)
→ Controller (프레젠테이션 계층)
→ Service (비즈니스 계층)
→ Repository (퍼시스턴스 계층)
→ DB(MySQL)
1 ) Presentation Layer - Controller
컨트롤러는 사용자의 HTTP 요청을 처음으로 받아들이는 계층이다. 요청 URL과 메서드(GET, POST, PUT, DELETE 등)에 따라 적절한 서비스 계층의 메서드를 호출한다. 이 계층은 로직을 처리하지 않고 흐름 제어에 집중한다.
@RestController
@RequestMapping("/api/user")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<UserDto> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.getUserById(id));
}
}
2) Business Layer – Sersvice
비즈니스 계층은 핵심 로직을 담당한다. 사용자 요청에 따라 처리할 구체적인 동작이 이 계층에서 실행되며, DB와의 직접적인 통신은 Repository에게 위임한다. 예를 들어, 유저 정보를 조회하거나, 주문 처리를 하는 등의 업무 규칙이 여기에 포함된다.
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public UserDto getUserById(Long id) {
User user = userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("User not found"));
return new UserDto(user);
}
}
3) Persistence Layer – Repository
JPA를 기반으로 하는 Repository는 실제 데이터베이스와의 통신을 담당한다. 복잡한 SQL문을 직접 작성하지 않아도, Spring Data JPA가 제공하는 메서드 명명 규칙에 따라 자동으로 쿼리를 생성할 수 있다.
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
2. DispatcherServlet
Spring Boot의 핵심은 DispatcherServlet이라는 서블릿이다. 이 컴포넌트는 모든 HTTP 요청을 받아 적절한 컨트롤러로 라우팅하고, 컨트롤러가 반환한 결과를 사용자에게 다시 응답하는 역할을 한다.
DispatcherServlet의 동작 흐름:
- 클라이언트가 요청을 보냄
사용자가 /api/user/1 같은 URL로 GET 요청을 보낸다. - 서블릿 컨테이너가 요청을 DispatcherServlet에 위임
Tomcat 같은 내장 WAS가 요청을 DispatcherServlet으로 전달한다. - Handler Mapping 탐색
요청 URL에 맞는 컨트롤러를 찾는다. /api/user/**는 UserController에 매핑될 수 있다. - HandlerAdapter를 통해 실행 준비
컨트롤러를 직접 실행하지 않고, 스프링이 제공하는 어댑터를 통해 실행 환경을 설정한다. - Controller 실행 → 결과 반환
실제 컨트롤러 메서드가 실행되어 ResponseEntity나 ModelAndView를 반환한다. - View Resolver가 응답 처리
반환 결과를 JSON으로 변환하거나 뷰 템플릿(.jsp, .html)을 렌더링한다. - 클라이언트에게 응답 전송
최종 결과가 HTTP 응답으로 사용자에게 전달된다.
Postman: API 테스트 필수 도구
개발 초기에는 프론트엔드가 완성되지 않아도 백엔드 API가 정상 작동하는지 확인할 필요가 있다. 이때 사용하는 것이 Postman이다.
- 요청 구성: URL, HTTP 메서드 선택(GET, POST 등), 헤더 및 바디 설정 가능
- JWT 테스트: Authorization 탭에서 Bearer Token을 넣고, 인증이 필요한 요청을 테스트할 수 있다
- 자동화 테스트: 컬렉션을 만들어 일련의 요청들을 저장하고 자동 실행 가능
- 설치 주소: https://www.postman.com/downloads
예를 들어, 회원가입 API를 테스트하고 싶다면:
- POST http://localhost:8080/api/user/signup
- Body → raw → JSON 선택
{
"username": "bergerac",
"password": "1234",
"email": "bergerac@example.com"
}'웹개발 > SpringBoot' 카테고리의 다른 글
| Jpa Repository (0) | 2025.05.22 |
|---|---|
| ORM (Object-Relational Mapping) (4) | 2025.05.21 |
| IoC(제어의 역전),DI(의존성 주입) (1) | 2025.05.19 |
| 서블릿(Servlet)vs 스프링부트(SpringBoot) (1) | 2025.05.18 |
| HTTP 통신 (0) | 2025.05.17 |