MVC 구조
Request -> Router -> Controller -> Service/Provider -> DAO -> DB
DB -> DAO -> Service/Provider -> Controller -> Router -> Response
Spring boot
Request(시작) / Response(끝) ⇄ Controller(= Router + Controller) ⇄ Service (CUD) / Provider (R) ⇄ DAO (DB)
Router
- 외부에서 요청을 받아 URI와 매핑된 Controller에 전달
Controller
- Request를 Service/Provider에게 넘겨주고 응답
- 형식적 Vaildation(값, 길이 등) -> DB를 거치지 않고 요청 데이터의 유효 여부 검증
- path-variable, query-string, body 요청들을 적절하게 처리
Service/Provider
- 비즈니스 로직 처리, DB에서 검증해야 하는 의미적 Vaildation
- DB와 직접적으로 소통
- Service -> POST, UPDATE, DELETE
- Provider -> GET
DAO
- Data Access Object(데이터가 실질적으로 연결되어 있는 객체)
- query문 실행, 데이터 결과값 획득 -> Service/Provider에게 전달
Controller
1. @RestController
- @Controller + @ResponseBody
- 컨트롤러 클래스의 각 메서드마다 @ResponseBody 어노테이션을 붙이지 않아도 JSON 전송 가능
2. @RequestMapping("/app/users")
- method가 어떤 HTTP 요청을 처리할 것인가를 작성
- 요청에 대해 어떤 Controller, 어떤 메서드가 처리할지를 맵핑하기 위한 어노테이션
- URL(/app/users)을 컨트롤러의 메서드와 매핑할 때 사용
3. @ResponseBody
- 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할
- (@RestController를 사용하면 생략 가능)
4. RequestBody
- HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할
5. @RequestParam
- @RequestParam은, 1개의 HTTP Request 파라미터를 받을 수 있는 어노테이션(?뒤의 값). default로 RequestParam은 반드시 값이 존재해야 하도록 설정되어 있지만, (전송 안되면 400 Error 유발)
- required 설정으로 필수 값에서 제외 시킬 수 있음
getUsers(@RequestParam(required = false) String nickname)
- defaultValue를 통해, 기본값(파라미터가 없는 경우, 해당 파라미터의 기본값 설정)을 지정할 수 있음
6. @PostMapping("/sign-up"), @GetMapping(""), @PatchMapping("/{userIdx}")
- POST, GET, PATCH 방식의 요청을 매핑하기 위한 어노테이션
@Service
- Repository를 통해 DB에서 데이터를 가져온 후 Controller에게 전달해주는 클래스
- Service/Provider에 사용
@Repository
- 해당 클래스가 DB에 접근하는 클래스임을 명시
- DAO에 사용
@Autowired
- 의존성 주입을 할 때 사용하는 어노테이션 -> 의존 객체의 타입에 해당하는 빈을 찾아 주입
- 객체 생성을 자동으로 해주는 역할
'Spring Boot' 카테고리의 다른 글
Spring Boot - MVC 기능 (0) | 2023.06.30 |
---|---|
Spring Boot - MVC 구조 (0) | 2023.06.25 |
스프링 핵심 원리 (0) | 2023.06.23 |
Spring Boot, 웹 MVC, DB 접근 기술 (1) | 2023.05.13 |
Spring Boot 예외 처리 (0) | 2023.01.22 |