[Spring]REST API 버전 관리 방법
·
spring
🔍 API 버전 관리는 왜 필요할까?API는 시간이 지나면서 새로운 기능이 추가되거나 기존 기능이 변경될 수 있습니다.하지만 기존 API를 그대로 변경하면 기존 클라이언트가 예상치 못한 오류를 겪을 수 있기 때문에, API 버전 관리를 통해 안정적으로 서비스를 운영해야 합니다. 🚀 API 버전 관리를 통해 얻을 수 있는 장점:클라이언트가 원하는 버전을 선택할 수 있음기존 API를 유지하면서 새로운 기능을 추가할 수 있음API의 변경을 점진적으로 적용 가능📌 API 버전 관리 방법 4가지1. URL 경로 기반 버전 관리📢 방식:버전을 URL 경로에 포함하여 API를 구분하는 방식 (/api/v1/, /api/v2/)@RestController@RequestMapping("/api")public cl..
[Spring]파일 업로드 하기
·
spring
웹 개발을 하다 보면 파일을 업로드해야 하는 경우가 많습니다.프로필 이미지, 첨부 파일, 문서 관리 등 파일 업로드 기능은 정말 자주 사용되죠.이번 글에서는 Spring Boot에서 파일을 업로드하고, 로컬 저장소에 저장하는 방법을 설명해보겠습니다.1. 파일 업로드 기능을 위한 환경 설정Spring Boot에서는 기본적으로 multipart/form-data 형식의 파일 업로드를 지원합니다.파일을 저장할 디렉토리를 application.properties에서 지정해줍니다. application.properties 설정# applicaiton.properties# 파일 업로드 디렉토리 설정upload.local.dir= ex) C:/Users/test/Documents/uploads이 설정을 통해 업로드된..
[Spring] 이벤트 시스템으로 느슨한 결합 구현하기
·
spring
1. 스프링 이벤트란?스프링 이벤트는 Observer 패턴을 기반으로 동작합니다. 특정 이벤트가 발생하면, 그 이벤트를 "구독"하고 있는 리스너들이 호출되는 방식이죠. 이를 통해 비동기 처리, 로깅, 알림 시스템 등 다양한 곳에 활용할 수 있습니다.✨ 왜 사용할까요?느슨한 결합: 이벤트 발행자와 리스너가 서로의 존재를 몰라도 됩니다.유지보수 용이: 기능 추가나 변경 시 다른 코드에 영향을 최소화합니다.비동기 처리 가능: 이벤트 리스너를 비동기로 처리하여 성능을 개선할 수 있습니다.트랜잭션 후처리: 트랜잭션 완료 후 안전하게 이벤트를 처리할 수 있습니다.2. 스프링 이벤트 시스템: 개념과 실습스프링 이벤트 시스템은 크게 이벤트(Event), 이벤트 발행자(Publisher), 그리고 이벤트 리스너(List..
[Spring] 날짜/시간 처리하기 (@DateTimeFormat vs @JsonFormat)
·
spring
스프링 애플리케이션을 개발하다 보면, 클라이언트로부터 날짜/시간을 파라미터나 JSON으로 입력받거나, 다시 응답으로 내려주는 경우가 자주 있습니다.이때 Spring MVC와 Jackson(스프링에서 기본적으로 사용하는 JSON 직렬화 라이브러리)에서 제공하는 어노테이션인@DateTimeFormat@JsonFormat을 활용하면, 날짜/시간을 특정 포맷으로 편리하게 다룰 수 있습니다.그렇지만 둘의 역할이 미묘하게 달라 의도치 않은 혼란이 생길 수도 있습니다.1. 예시 코드1.1. 컨트롤러@RestController@RequestMapping("/date")public class DateFormatController { @GetMapping("/body") public DateDto getDateBody(@..
[Spring] DTO 유효성 검사(Validation) : @Valid로 처리하기
·
spring
1. DTO에서 왜 검증이 필요할까?스프링 부트 애플리케이션에서 클라이언트로부터 입력받는 데이터(주로 @RequestBody로 전달되는 JSON 요청 등)는 유효성 검사가 필요합니다.예를 들어, 회원가입 시 다음과 같은 상황이 발생할 수 있습니다.이메일 형식이 잘못됨비밀번호가 너무 짧거나 빈 값나이(age)가 음수만약 입력값에 대한 검증을 제대로 하지 않는다면, 잘못된 데이터가 DB에 저장되거나, 내부 로직에서 오류를 발생시킬 수 있습니다.이를 방지하기 위해 DTO(Data Transfer Object)에 검증 노테이션을 달아 유효성을 검사하고, 문제가 있다면 적절한 에러 응답을 반환하도록 하는 방식을 사용합니다.2. 의존성 추가 (Validation Starter)스프링 부트에서 Validation을 ..
[Spring] profile 환경 분리하기
·
spring
스프링 애플리케이션을 개발하다 보면 다양한 환경에서의 설정이 필요합니다. 일반적으로 dev, staging, prod와 같은 개발, 스테이징, 운영 환경이 대표적입니다. 각 환경에서 설정을 분리하면 환경 간 간섭을 최소화할 수 있으며, 코드의 가독성과 유지보수성을 크게 향상시킬 수 있습니다. 이번 블로그에서는 스프링에서 application.properties(또는 application.yml) 파일을 활용해 환경을 분리하는 방법을 알아보겠습니다.1. 환경별 설정 파일 구성하기스프링에서는 기본적으로 application.properties 파일을 통해 설정을 관리합니다. 하지만 환경별로 설정이 다르다면 이를 분리하여 관리하는 것이 효율적입니다. 스프링은 프로파일(Profile)이라는 기능을 통해 환경별 ..