개요프로젝트를 진행하면서 aws S3에 파일을 업로드해야하는 과정이 있었습니다. S3 버킷에 잘 업로드 된 것을 확인했고, 요청을 보냈을 때 uploadUrl도 잘나오는데, 확장자가 빠져있었습니다. 확장자가 없기 때문에 uploadUrl로 접속하여 다운을 받고, 해당 파일을 확인하면 위와 같은 에러 발생가 발생합니다. 문제 원인이유는 S3에 파일을 업로드할 때 원본 파일의 확장자를 유지하지 않아서 발생한 것입니다.문제 코드@SneakyThrows public String uploadMultiMedia(Long userId, MultipartFile file) { String uploadUrl = ""; // 사용자 별 년도 월 일로 데이터 관리 String ke..
til
@Scheduled 란❓Spring Boot에서 @Scheduled 어노테이션은 특정 메서드를 주기적으로 실행할 수 있게 해주는 유용한 기능입니다. 주기적인 데이터 백업, 로그 정리, 알림 전송 같은 반복 작업을 자동화하여 개발자가 손쉽게 관리할 수 있도록 지원합니다. 이는 백그라운드에서 반복적으로 수행해야 하는 작업을 간편하게 설정할 수 있어 유지 관리와 효율성에 큰 도움이 됩니다. @Scheduled 설정 방법@EnableScheduling 설정 스케줄링 기능을 사용하려면 Spring Boot 애플리케이션이나 설정 클래스에 @EnableScheduling을 추가해야 합니다. 이 어노테이션이 있어야 @Scheduled가 활성화됩니다.import org.springframework.boot.SpringA..
문제 상황한달에 한번 자동으로 정산을 진행하도록 스케줄러를 통하여 구현을 하는 과정에서 지난 달의 첫날과 마지막 날을 정확하게 구해야 했습니다.LocalDateTime now = LocalDateTime.now(); LocalDateTime endDate = now.withDayOfMonth(1).minusNanos(1); LocalDateTime startDate = endDate.minusMonths(1).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0); Long settlementTime = endDate.getYear() * 100L + endDate.getMo..
문제 상황원래는 결제 타입을 결제를 할 때 선택을 하는 방식이었는데, 토스 페이먼츠에서 선택후 반환되는 응답값을 받아서 저장하는 방식으로 변경했습니다. 따라서 기존의 엔티티 클래스를 수정해야 했습니다. 위와 같이 원래의 Enum 타입에서 String 타입으로 변경을 했습니다.org.postgresql.util.PSQLException: ERROR: new row for relation "p_payments" violates check constraint "p_payments_pay_type_check" 그런데 엔티티 클래스 변경 후 위와 같은 에러가 발생했습니다. 이 에러는 PostgreSQL의 p_payments 테이블에 대해 pay_type 컬럼에 정의된 CHECK CONSTRAINT 제약 조건을 위..