BackEnd/Spring Boot
-
Spring Boot 핵심 기능 1 - 내장 톰캣BackEnd/Spring Boot 2023. 3. 25. 11:30
이전에는 웹 애플리케이션을 구동하고 싶으면 웹 애플리케이션 서버(WAS)를 별도로 설치하고, 웹 애플리케이션 빌드 파일(WAR)을 배포해야 했습니다. WAR 배포 방식의 단점 톰캣 같은 WAS를 별도로 설치해야 합니다. 개발 환경 설정이 복잡합니다. 배포 과정이 복잡합니다. 톰캣의 버전을 변경하려면 톰캣을 다시 설치해야 합니다. 이런 문제를 해결하기 위해 톰캣을 라이브러리로 제공하는 내장 톰캣(embed tomcat) 기능을 제공합니다. 외장 서버 vs 내장 서버 외장 서버: 웹 애플리케이션 서버에 WAR 파일을 배포하는 방식으로 WAS를 실행해서 동작합니다. 내장 서버: 애플리케이션 JAR 안에 다양한 라이브러리들과 WAS 라이브러리가 포함되는 방식으로 main() 메서드를 실행해서 동작합니다. 스프링..
-
REST APIBackEnd/Spring Boot 2022. 5. 25. 21:30
REST API REST를 기반으로 만들어진 API REST Representational State Transfer의 약자 2000년도 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개된 개념 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식 웹에 존재하는 모든 자원(이미지, 동영상, 텍스트 등)에 고유한 URI를 부여해 활용하는 개념 REST 구성요소 자원(Resource): HTTP URI 행위(Verb): HTTP Method(GET, POST, PUT, DELETE 등) 표현(Representation): 서버가 응답으로 보내주는 자원의 상태(JSON, XML, TEXT 등) REST 특징 Uniform(유니폼 인터페이스): URI로 지정한 자원에 대한 조작을 통일..
-
HAL BrowserBackEnd/Spring Boot 2022. 5. 25. 19:24
Overview 해당 글에서는 API 응답에 부가적인 정보를 제공할 수 있는 HAL Browser 기능에 대해 알아보겠습니다. HAL Browser는 Hypertext Application Language의 약자로 API 리소스 간 일관되고 쉬운 하이퍼링크 방법을 제공하는 간단한 형식입니다. HAL Model Resources 관련 URI에 대한 링크 내장된 리소스 상태 Links 대상 URI 링크에 대한 관계 또는 참조 감가상각, 콘텐츠 협상 등에 도움이 되는 몇 가지 기타 선택적 속성 Dependency org.springframework.data spring-data-rest-hal-explorer 의존성을 추가하고 서버를 기동한 후 http://localhost:8088/ 접속하면 아래와 같은 ..
-
ActuatorBackEnd/Spring Boot 2022. 5. 20. 12:20
Overview 해당 글에서는 Spring Boot에서 자체적으로 제공해주는 Actuator 기능에 대해 알아보겠습니다. Actuator 기능을 통해 애플리케이션을 모니터링하고 관리할 수 있습니다. Dependency org.springframework.boot spring-boot-starter-actuator Actuator 의존성을 추가하고 서버를 기동한 후 http://localhost:8088/actuator 접속하면 HATEOAS가 적용된 아래와 같은 결과를 확인할 수 있습니다. http://localhost:8088/actuator/health를 통해 health check가 가능합니다. 보다 많은 정보를 확인하기 위해 application.yml 파일을 수정합니다. # port 변경 ser..
-
HATEOASBackEnd/Spring Boot 2022. 5. 20. 09:10
Overview 해당 글에서는 Level 3 REST API 구현을 위한 HATEOAS(Hypermedia As the Engine Of Application State) 기능에 대해 살펴보겠습니다. HATEOAS란 REST API를 사용하는 클라이언트가 서버와 동적인 상호작용이 가능하도록 하는 것을 의미합니다. 즉, 현재 리소스와 연관된 자원 상태 정보를 제공하는 것을 의미합니다. 예를 들어, 계좌 조회 시 아래와 같이 예치금, 출금, 이체 또는 요청 닫기 등의 후속 링크를 포함하여 응답합니다. HTTP/1.1 200 OK { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": 100.00 }, "links": {..
-
버전 관리(Versioning)BackEnd/Spring Boot 2022. 4. 26. 08:35
Overview 해당 글에서는 REST API 버전 관리 방법에 대해 알아보겠습니다. URI Versioning 모든 URI에 공통적으로 적용되는 "/goods"의 경우 @RequestMapping 애노테이션을 사용하여 설정합니다. @RestController @RequestMapping("/goods") public class GoodsController { @GetMapping(path = "/v1/{goodsCode}") // endpoint public Goods findGoodsV1(@PathVariable int goodsCode) throws Exception { /* ... 생략 ... */ } @GetMapping(path = "/v2/{goodsCode}") // endpoint pub..
-
@JsonIgnoreBackEnd/Spring Boot 2022. 4. 25. 07:38
Overview 해당 글에서는 @JsonIgnore 애노테이션을 사용하여 응답 데이터를 Filtering 하겠습니다. 기존 응답 데이터는 아래와 같습니다. // 20220425073134 // http://localhost:8088/goods/1 { "goodsCode": 1, "goodsName": "1번 상품입니다." } @JsonIgnore 애노테이션을 사용하면 특정 데이터는 응답 데이터에서 제외시킬 수 있습니다. package com.spring.springboot.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import javax.validation.constraints.NotEmpty; import javax.validation.c..
-
XML formatBackEnd/Spring Boot 2022. 4. 25. 07:16
Overview 해당 글에서는 XML 문서 format을 처리하는 방법에 대해 알아보겠습니다. API 호출 시 Headers에 Accept 값을 application/xml로 주면 xml 타입으로 요청하게 됩니다. 아무런 설정도 하지 않았다면 아래와 같이 결과는 406 Not Acceptable 입니다. SpringBoot에서는 dependency를 추가함으로 XML 문서를 처리할 수 있습니다. com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.10.2