본문 바로가기

Spring Boot

(9)
[Spring Boot] 스웨거(Swagger) 알아보기 ⚙️ 개발 환경 IDE: IntelliJ JDK: 11 Spring: SpringBoot 2.7.1 + Gradle 🔎 스웨거(Swagger) 란? RESTful API 문서를 자동으로 생성하고 관리하기 위한 도구이다. 프로젝트에 대해서 프론트엔드 개발자와 문서를 통하여 스펙을 명확하게 전달하고 관리하는 데 사용한다. 💻 스웨거(Swagger) 적용 1. 스웨거를 사용하기 위해서는 build.gradle 의존성을 추가해 주어야 한다. dependencies { implementation 'io.springfox:springfox-swagger-ui:3.0.0' implementation 'io.springfox:springfox-boot-starter:3.0.0' } 2. Config 만들어주기 pack..
[Spring Boot] 스프링의 핵심 가이드 (개발에 앞서 알면 좋은 기초 지식) 🔍 서버 간 통신 어떤 포털 사이트를 하나의 서비스 단위로 개발한다고 가정하면, 개발에 보수적인 입장을 취할 수밖에 없고, 서비스 자체의 규모도 커지기 때문에 서비스를 구동하는 데 걸리는 시간도 길어진다. 이 같은 문제를 해결하기 위해 나온 것이 마이크로서비스 아키텍처(MSA)이다. 마이크로서비스 아키텍처는 서비스 규모를 작게 나누어 구성한 아키텍처를 뜻한다. 서비스 기능별로 구분해서 독립적인 애플리케이션을 개발하게 되면 각 서비스 간에 통신해야 하는 경우가 발생한다. 서버 간 통신은 한 서버가 다른 서버에 통신을 요청하는 것을 의미하며, 한 대는 서버, 다른 한 대는 클라이언트가 되는 구조이다. 몇 가지 프로토콜에 의해 다양한 통신 방식을 적용할 수 있지만 가장 많이 사용되는 방식은 HTTP/HTTPS..
[Spring Boot] 스프링 부트 알아보기 🔍 Spring Boot 스프링 부트는 자바 기반의 오픈 소스 프레임워크인 스프링(Spring)을 기반으로 한, 웹 애플리케이션과 마이크로서비스를 빠르고 쉽게 개발하고 실행할 수 있도록 도와주는 도구입니다. 스프링 프레임워크는 기능이 강력하고 확장성이 뛰어난 프레임워크이지만, 초기에 설정과 환경 구축이 복잡하다는 단점이 있었습니다. 이러한 단점을 보완하기 위해 스프링 프레임워크를 기반으로 하는 스프링 부트가 등장하게 되었다. 💡 SpringFramwork 핵심 📌 제어 역전 (IoC : Inversion of Control) 스프링에서는 프로그램의 흐름을 프레임워크가 주도한다. 객체의 생성부터 생명주기 관리를 컨테이너가 도맡아서 한다. 즉, 제어권이 컨테이너로 넘어가게 되고, 이것을 제어권의 흐름이 바뀌..
[Spring Boot] @RequestParam & @PathVariable 알아보기 🔍 @RequestParam 이란? @RequestParam은 Spring MVC에서 사용되는 어노테이션으로, HTTP 요청에서 파라미터 값을 가져오는 데 사용된다. 주로 URL 쿼리 파라미터(parameter)를 읽어오는 데에 사용된다. 클라이언트가 입력한 데이터들이 URL을 통해서 전달된다. @RequestParam()에 4가지의 파라미터를 가지고 있다. ❓ 파라미터 종류 1. defaultValue - 값이 설정되지 않을 때 기본으로 설정할 값 2. name - URL에서 바인딩할 요청 파라미터의 이름 3. value - name의 별칭 4. required - 필수 값인지 설정하는 값 💡 URL 예시 GET /api/books? category=thriller&author=John+Doe 💻 코드..
[SpringBoot] TDD(TestCode) & JUnit 알아보기 🔍 TDD 란? Test-Driven Development의 약자이다. 테스트 주도 개발이라는 의미를 가진다. 소프트웨어 개발 방법론 중 하나이다. TDD는 개발자가 코드를 작성하기 전에 테스트를 먼저 작성하고, 그 테스트를 통과하는 코드를 작성하는 개발 접근 방식입니다. 🔍 TDD의 목적 💡 코드 품질 향상 테스트를 통해 개발자는 코드의 동작을 명확히 이해하고, 예상치 못한 버그를 사전에 발견할 수 있다. 이는 코드의 품질을 높이고 유지보수를 용이하게 한다. 💡 설계 개선 TDD는 코드를 작은 단위로 분리하고 모듈화 하여 개발하게 한다. 이는 좋은 설계 원칙을 따르고 유연하고 확장 가능한 소프트웨어를 만드는 데 도움을 준다. 💡 빠른 피드백 TDD에서는 작은 단위의 테스트 케이스를 실행하여 즉시 피..
[Spring Boot] Controller & RestController 알아보기 🔍 Controller Controller는 웹 애플리케이션의 요청과 응답을 처리하는 역할을 한다. 사용자의 요청을 받아 해당 요청에 대한 처리를 진행하고, 그 결과를 응답으로 반환한다. 일반적으로 MVC 아키텍처에서 컨트롤러는 Model, View 사이의 상호작용을 관리하며, 비즈니스 로직을 처리하지 않습니다. 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다. Spring MVC의 컨트롤러를 사용하면서 Data를 반환해야 하는 경우도 있습니다. 컨트롤러에서는 데이터를 반환하기 위해 @ResponseBody 어노테이션을 활용해주어야 합니다. 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다. 💻 예시 코드 // view ..
[Spring Boot] @PathVariable 이란 ? 🔍@PathVariable 이란? 경로 변수를 표시하기 위해 메서드에 매개변수에 사용된다. 경로 변수는 중괄호 {id}로 둘러싸인 값을 나타낸다. URL 경로에서 변수 값을 추출하여 매개변수에 할당한다. 기본적으로 경로 변수는 반드시 값을 가져야 하며, 값이 없는 경우 404 오류가 발생한다. 주로 상세 조회, 수정, 삭제와 같은 작업에서 리소스 식별자로 사용된다. 💡예를 들면, 아래 URL에서 밑줄 친 부분이 @PathVariable로 처리해 줄 수 있다. woogieNote.tistory.com/100 localhost:8080/diary/diaries/3 💻예시 코드 @RestController() @GetMapping("/diaries/{id}") public DiaryResponse getDia..
[Spring Boot] DTO, DAO, VO 개념 정리 📌 DTO (Data Transfer Object) view와 통신하기 위한 클래스 getter와 setter 메서드 만을 가진 클래스 db에서 데이터를 받고 이 데이터를 다시 service 나 controller 등으로 넘겨주는 역할 세부적인 로직을 갖고 있지 않는 db로부터 받을 데이터들을 어떤 방식, 타입 등으로 보낼 것인지 정의해 놓는 클래스 또는 순수한 데이터 객체라고 의미하면 된다고 생각한다. 📌 DAO (Data Access Object) repository 패키지로 실제로 db에 접근하여 data를 CRUD 하는 객체 service와 db를 연결해주는 역할을 한다. 인터페이스와 이에 대한 구현체를 만들어서 구현체에 CRUD 관련 기능을 구현하고, 이를 DI(Dependency Injecti..