[Aws]EC2 #7-2 : Spring Boot 서버 배포
·
aws
이번에는 Spring Boot 프로젝트를 EC2 인스턴스에 배포해보겠습니다.Node.js 기반의 Express 서버와 달리, Java 기반인 Spring Boot는 환경 설정이 조금 다르지만, 흐름은 거의 동일합니다.❗ 리눅스 명령어나 Spring Boot 코드에 대한 설명은 생략합니다.이 글은 EC2에 이미 완성된 Spring Boot 서버를 배포하는 실습용 가이드입니다.✅ 1. Ubuntu에 JDK 17 설치하기Spring Boot 3.x 버전은 최소 JDK 17 이상이 필요합니다.먼저 EC2(Ubuntu) 인스턴스에 JDK 17을 설치해봅니다.$ sudo apt update && /sudo apt install openjdk-17-jdk -y✅ 2. 설치 확인아래 명령어로 JDK가 정상 설치됐는지 ..
[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)이라는 기능을 통해 환경별 ..