안녕하세요 코딩 입문자 만슨 입니다. 백엔드 쪽을 공부하면서 알게 되고 배운 것을 기록하는 블로그 입니다. 훈수 언제든지 환영입니다.
스프링 부트란?
스프링 부트(Spring Boot)는 자바(Java) 기반의 오픈 소스 프레임워크이다.
스프링 부트는 스프링 기반의 애플리 캐이션을 보다 빠르고 쉽게 개발 할 수 있도록 도와주는 Web aplication Framework 다.
스프링 부트는 스프링 프레임워크를 기반으로 하고 있으며, 자동 설정(Auto Configuration) 기능을 통해 개발자가 별도의 설정 없이도 적절한 환경을 구성할 수 있도록 해주는 아주 좋은 프레임 워크이다.
그럼 어떠한 기능때문에 우리에게 편리한 개발을 도와주는지 한 번 알아보자
스프링 부트의 주요 기능
1. 자동 설정(Auto Configuration) : 개발자가 별도의 설정을 하지 않아도 스프링 부트가 적절한 설정을 자동으로 설정해준다.
ex) 데이터베이스 연결 설정, 웹 애블리케이션 설정, 보안 설정 등..
특히 보안 설정은 spring-boot-starter-security 스타터를 추가해서 간략한 설정만하면 로그인 및 회원가입을 할 수 있는걸 보고 기가막힌 편리함을 느꼇다..
2. 내장형 서버(Embedded Server) : 애플리케이션을 실행하기 위한 서버를 애플리케이션에 내장시킴으로써 외부 서버 설정이 필요 없이 애플리케이션을 실행할 수 있다.
3. 스타터(Starter) 종속성 : 개발에 필요한 다양한 라이브러리와 설정을 포함한 스타터 종속성을 제공하여 개발 환경을 쉽게 구성할 수 있다.
개발하기에 아주 좋은 프레임 워크 인것 같다..
스프링부트 구조
API를 호출 했을 때 Request 부터 Response 까지 흐름
스프링부트의 기본적인 아키택처는 위와 같습니다.
- Dispatcher Servlet : 클라이언트의 요청을 받아드리고, 해당 요청을 처리할 핸들러로 전달하는 역할. 프론트 엔드(클라이언트) 에서 요청이 들어왔을 때 이 요청을 적절한 핸들러로 분배 하며 핸들러의 실행 결과를 기반으로 클라이언트에게 응답을 생성 해준다. 이때 적절한 형태로 변환하여 응답으로 반환.
- Handler Mapping : 클라이언트 요청 URL과 요청 처리를 담당할 핸들러 클래스 매핑해주는 역할을 한다. 즉 Dispatcher Servlet이 클라이언트의 요청을 받게 되면 Handler Mapping을 통해 처리 할 수 있는 핸들러로 매핑을 해줍니다.
- Handler Adapter : Handler Mapping으로 부터 전달받은 핸들러를 실행 하고, 다시 그 결과를 Dispatcher Servlet에 반환하는 역할을 해준다.
Dispatcher Servlet, Handler Mapping, Handler Adapter는 스프링부트 애플리케이션에서 웹 요청의 처리 과정을 담당하는 요소들이다.
- Handler(Controller) : 클라이언트의 요청을 처리하는 로직을 담당하는 컴포넌트. 클라이언트의 요청을 받아들이고, 해당 요청을 처리하기 위한 비즈니스 로직을 실행한다. 일반적으로 웹 애플리케이션에서는 클라이언트의 HTTP 요청을 처리하고, 그에맞는 응답을 생성하여 리턴 해주는 역할이다.
- DTO(Data Transfer Object) : 데이터 전송 객체로, 주로 데이터를 전달하는 용도로 사용된다. 비즈니스 로직에서 사용되는 데이터를 담는 객체이다. DTO는 주로 여러 계층 간의 데이터 교환에 사용되며, 데이터베이스에서 조회한 결과나 사용자 입력 데이터 등을 담고 전달하는 역할을 한다.
- Service : 비즈니스 로직을 수행하는 컴포넌트입니다. Handler(Controller)에서 받은 요청을 처리하기 위한 실제 비즈니스 로직을 구현합니다. 데이터의 가공, 검증, 트랜잭션 처리 등을 수행하며, Service는 여러 개의 Repository를 사용하여 데이터를 조작하고 처리
- Repository : 데이터베이스와의 상호작용을 담당하는 컴포넌트이다. 데이터의 영속성(Persistence)을 관리하며, 데이터베이스에 접근하여 데이터를 조회, 저장, 수정, 삭제하는 역할을 한다. Repository는 데이터 액세스를 추상화하여 Service 계층에서 데이터 조작을 위한 인터페이스를 제공한다.
- DAO (Data Access Object) : 데이터 액세스 객체로, Repository와 유사한 역할을 수행한다. DAO는 데이터베이스와의 상호작용을 담당하며, 데이터 액세스 관련 로직을 구현
- Entity : Entity는 데이터베이스의 테이블에 매핑되는 객체이다. 데이터베이스에서 조회, 저장, 수정, 삭제가 가능한 객체로, 비즈니스 도메인에서 사용되는 데이터를 표현한다.
본인 프로젝트 구조
다음 포스팅 부터는 직접 프로젝트를 하면서 배우고 알게된 부분에 대해서 포스팅 해보겠습니다.
사진출처 : Spring Boot, CRUD API 개발을 위한 기록 -2- (MVC 아키텍처 구성과 API) (breezymind.com)