멋쟁이사자처럼 1주차 세션을 준비하면서 스프링부트 기초에 대해 다시 정리해보았다.
Java 기반 애플리케이션 개발을 지원하는 오픈소스 애플리케이션 프레임워크
많은 문제점 존재
더 쉽고 빠르게 스프링 애플리케이션을 개발하도록 도와주기 위해 개발
스프링의 모든 문제점 해결
역할: 애플리케이션의 데이터와 비즈니스 로직을 관리한다. 데이터베이스와의 상호작용, 데이터 검증, 데이터 변환 등의 작업을 수행.
특징: 모델은 뷰나 컨트롤러에 대해 알지 못하며, 독립적으로 동작한다. 데이터의 상태가 변경되면, 모델은 그 변경 사실을 뷰나 컨트롤러에 통보할 수 있다.
역할: 사용자에게 데이터를 보여주고, 사용자로부터 입력을 받는 역할. HTML, CSS, JavaScript 등을 사용하여 사용자 인터페이스를 구성. 프론트엔드라고 생각하면 된다.
특징: 뷰는 모델의 상태를 반영하여 데이터를 표시하며, 사용자가 상호작용할 수 있는 인터페이스를 제공한다. 뷰는 컨트롤러를 통해 모델과 상호작용한다.
역할: 사용자 입력을 처리하고, 모델을 업데이트하며, 그 결과를 뷰에 반영한다. 뷰와 모델 사이의 중개자 역할.
특징: 컨트롤러는 사용자로부터 입력을 받아 그에 따라 모델을 조작하고, 변경된 모델을 뷰에 반영.
Controller
Client의 요청을 DTO의 형태로 받아 Service의 기능을 호출하고, 적절한 응답을 DTO의 형태로 반환
Service
DTO를 통해 받은 데이터를 이용해 비즈니스 로직을 처리하고, DAO를 통해 DB에 접근하여 데이터를 관리
DTO(Data Access Object)
DB의 data에 접근하기 위한 객체
Repository/ DAO(Data Transfer Object)
데이터를 Transfer(이동)하기 위한 객체
쉽게 말해 클라이언트가 회원가입을 하면 ID, PW 등등 정보를 입력하고 회원가입 버튼을 누르게 되면 정보들이 DTO에 담겨 Controller -> Service -> Repository/DAO -> DB 로 가게 된다.
DTO는 자바 객체로 데이터베이스에 저장할 수 없으니, Service에서 Entity로 변환하는 작업을 수행한 후, DB에 저장하게 된다.
전통적인 Spring MVC의 컨트롤러 어노테이션인 @Controller는 주로 View(화면)를 반환하기 위해 사용
요약해서 요청이 오면 그에 맞는 화면을 반환해준다.
Spring MVC의 컨트롤러를 사용할 때 Data를 반환해야 하는 경우가 존재한다.
이 때 @ResponseBody 어노테이션을 활용해서 JSON 형태의 데이터를 반환할 수 있다.
가장 현대의 개발 방식.
@Controller + @ResponseBody가 합쳐진 형태로 JSON 형태의 객체 데이터를 반환
과거에는 JSP, HTML과 같은 View를 전달해 주었기에 주로 @Controller를 사용.
현재는 프론트와 백을 나누어 개발하는 경우가 많고 백엔드에서 Rest API를 통해 JSON으로 데이터만 전달하기 때문에 @RestContoller를 사용한다.