SpringBoot(6)
-
[SpringBoot] @NotBlank가 Enum에서 작동하지 않는 이유 및 해결
오늘은 개인 프로젝트를 구현하면서 검증 시 사용하였던 @NotBlank가 Enum에서 작동하지 않는 이유와 해결 방법에 대해서 알아보자. 먼저, 오류가 발생하였던 문제 상황부터 들어가 보자.[⚠️ 문제 상황]RequestDTO의 필드인 Enum 클래스에서 @Valid 검증을 하려고 한다.위 코드에서 Enum 타입의 필드 boardType이 Enum 클래스이며, RequestDTO 클래스 BoardTypeUpdateRequest가 정의되어 있다. 아래 필드 부분에서 @NotBlank가 정상적으로 동작할 수 있게 RestController 메서드에서도 @Valid를 사용하여 구현하였다. 하지만, API를 호출해 보면 아래와 같은 오류가 발생한다.jakarta.validation.UnexpectedType..
2025.07.03 -
[Spring Boot] @RestControllerAdvice + @ExceptionHandler를 이용한 전역 예외 처리
개인 프로젝트를 구현하면서 사용하였던 @RestControllerAdvice + @ExceptionHandler에 대해서 정리해보려고 한다. @RestControllerAdvice + @ExceptionHandler를 이용한 전역 예외 처리에 대해서 알아보자. 가장 먼저 @RestControllerAdvice를 알아보기 전 @ControllerAdvice에 대해서 알아보자.@ControllerAdvice란?: @ExceptionHandler, @ModelAttribute, @InitBinder가 적용된 메서드들에 AOP를 적용하여 Controller 단에 적용하기 위해 만들어진 어노테이션이다.클래스에 선언되고, 모든 @Controller에 대한 전역으로 발생하는 예외들을 잡아서 처리할 수 있는 것이다.즉..
2025.04.22 -
[Spring Boot] Spring Security + JWT를 이용한 로그인 구현(RestAPI)
오늘은 Spring Security + JWT를 이용하여 RestAPI 로그인을 구현해보려고 한다.가장 먼저 JWT가 무엇일까? JWT(Json Web Token)란?: 일반적으로 클라이언트와 서버 사이에서 통신할 때 권한을 위해 사용하는 토큰이다.보통 정보를 비밀리에 전달하거나 인증할 때 사용하고, Json 객체를 이용한다.표준 규약에 따라 생성한 암호화된 토큰이기에 복잡하고 읽을 수 없는 String 형태로 저장되어 있는 것이 특징이다.JWT의 구성요소: JWT는 헤더(Header), 페이로드(Payload), 서명(Signature)으로 나누어져 있다.- 각 구성요소들은 . 으로 구분된다.xxxxxx.yyyyyy.zzzzzz - Header: 토큰의 유형, 암호화 알고리즘과 같은 토큰의 메타 데..
2025.04.15 -
[Spring Boot] @Schedule을 이용하여 특정 시간마다 작업 실행하기
최근 개인 프로젝트에서 특정 시간마다 알림이 오게끔 기능을 구현하였다.이렇게, 특정 시간마다 작업을 실행해야 할 때 사용한 Spring Scheduler를 정리해보려고 한다! Spring Scheduler란?: Spring Scheduler는 스프링 프레임워크에서 제공하는 스케줄링 기능으로, 특정 작업을 주기적으로 실행하거나 일정 시간 후에 실행할 수 있도록 제공하는 기능이다.자동화된 작업, 배치 작업 등을 구현할 때 유용하게 사용된다. Spring Scheduler는 @Schedule 어노테이션을 사용하여 작업을 수행한다. @Schedule 사용법1. Application설정먼저, @Schedule을 사용하기 위해 Application Class에 스케줄링 사용을 명시해야 한다.Application..
2025.02.24 -
[SpringBoot] @DataJpaTest 오류 해결
JUnit5으로 테스트 코드를 작성하고 있는데 이와 같은 오류가 발생한다.UnsatisfiedDependencyException: Error creating bean with name '...AccountRepositoryTest': Unsatisfied dependency expressed through field 'accountWriteService': No qualifying bean of type '...AccountWriteService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation..
2024.12.23 -
[SpringBoot] SMTP Gmail 이메일 전송 구현 (RestAPI)
Gmail을 이용하여 RestAPI 방식으로 이메일 전송을 구현해보려고 한다.최근, 구글 SMTP 이용 방법이 달라지면서 정보가 많이 부족하여 성공한 경험을 정리해두려고 한다! 저는 SpringBoot + Java + JPA + RestAPI 방식으로 구현하였습니다. 구글 gmail의 SMTP를 이용하여 이메일 전송을 구현해 보자. 1. 구글 계정 설정-> 저는 SMTP 메일 발송용 Gmail 계정을 하나 생성하여 구현하였습니다. (선택 사항)1-1. Gmail - 우측 상단 톱니바퀴 클릭 - 모든 설정 보기 클릭 1-2. 전달 및 POP/IMAP - IMAP 액세스 -> IMAP 사용 클릭 - 변경사항 저장=> 저장하면, 상태: IMAP를 사용할 수 있습니다.라고 표시가 뜬다! 다음은, SMTP 사..
2024.07.10