개요프로젝트에서 결제 시스템을 토스 페이먼츠를 사용하고있습니다. 토스 페이먼츠에서는 위와 같이 결제 요청 ➡️ 결제창 호출 ➡️ 승인 API 요청 흐름으로 진행됩니다. 따라서 최종 결제 승인 요청을 할 때에는 토스 페이먼츠에게 API를 요청해야 합니다.PaymentSuccessDto result = null; // 최종 결제 승인 요청 URL : config에서 작성한 https://api.tosspayments.com/v1/payments/ + paymentKey result = restTemplate.postForObject(TossPaymentConfig.URL + paymentKey, new HttpEntity(params..
개요프로젝트를 진행하면서 결제 금액 필드에 대한 유효성 검사를 고민하던 중, @Positive 어노테이션을 알게 되었습니다. 이 글에서는 @Positive 애너테이션에 대해 자세히 알아보겠습니다. @Positive 어노테이션이란❓@Positive 어노테이션은 Spring Validation 또는 Hibernate Validator에서 제공하는 애너테이션 중 하나로, 해당 필드가 양수(positive number)인지 검증할 때 사용됩니다. 이 애너테이션은 숫자형 필드에 적용되어, 값이 0보다 큰 양수여야 한다는 제약 조건을 부여합니다. 사용 예시import javax.validation.constraints.Positive;public class Product { @Positive(mess..
개요멀티 모듈 MSA 프로젝트를 진행하던 중, Security 기능을 하나의 모듈로 분리하였으나, 이 Security 모듈의 빈들이 등록되지 않아 에러가 발생했습니다. 이를 해결하기 위해 @ComponentScan 어노테이션을 사용하여 Security 모듈의 빈들을 등록할 수 있도록 지정했습니다. @ComponentScan에 대해 알고는 있었지만, 이번 기회를 통해 @Component 어노테이션에 대해 더 깊이 알아보고자 합니다. @ComponentScan이란❓@ComponentScan은 Spring Framework에서 컴포넌트 클래스들을 자동으로 탐색하고 빈으로 등록하는 데 사용되는 어노테이션입니다. Spring 애플리케이션에서는 다양한 클래스들이 빈(Bean)으로 등록되어야 의존성 주입(Depend..
개요프로젝트를 진행하던 중 S3에 파일을 업로드하는 로직에서 문제가 발생했습니다. S3로 파일 업로드를 할 때 body의 form-data로 데이터를 보내야 합니다. 그러나 파일 업로드 API 요청을 할 때 다른 DTO 정보도 함께 보내야 했기 때문에 @ModelAttribute 어노테이션을 사용하여 데이터를 전달했습니다. 그러나 아래의 트러블슈팅 포스팅에서 알게 된 바와 같이 @ModelAttribute는 복잡한 타입의 데이터에 대해 자동 변환을 지원하지 않는다는 점을 발견했습니다. 그렇다면 @ModelAttribute가 자동 변환할 수 있는 타입에는 어떤 것들이 있는지 살펴보겠습니다. [트러블 슈팅] @ModelAttribute의 자동 변환 에러 해결문제 상황 문제 코드 @PostMapping pu..