[Spring] @ConfigurationProperties: 설정을 객체처럼 다루는 방법
·
Dev Framework/Spring
@ConfigurationProperties: 설정을 객체처럼 다루는 방법Spring Boot를 사용하다 보면, application.yml 혹은 application.properties에 설정값을 넣고 이를 Java 코드에서 읽어야 할 때가 많다. 대부분은 @Value를 사용해 간단히 값을 주입받지만, 설정 항목이 많아질수록 유지보수가 어려워진다. 이런 상황에서 @ConfigurationProperties는 설정값을 객체처럼 바인딩해주는 강력한 도구다. 특히 대규모 프로젝트나 외부 연동 API 설정처럼 계층적이고 반복적인 설정이 필요할 때 더욱 유용하다. 1. 기본 개념@ConfigurationProperties는 application.yml 혹은 application.properties의 값을 PO..
[Spring][SpringMVC] Spring Boot 기본 ExceptionResolver 3종 완전 정리
·
Dev Framework/Spring
Spring Boot 기본 ExceptionResolver 3종 완전 정리Spring MVC에서 예외가 발생하면 DispatcherServlet은 내부적으로 HandlerExceptionResolverComposite를 통해예외 처리 흐름을 제어합니다. 해당 Composite에는 기본적으로 다음의 Resolver들이 등록되며, 순서대로 예외 처리를 시도합니다.등록 순서ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolver각 Resolver는 다음과 같은 상황에서 사용됩니다. 1. ExceptionHandlerExceptionResolver정의@ExceptionHandler 애노테이션이 붙은..
[Spring] ControllerAdvice + ExceptionHandler 전역 예외 처리
·
Dev Framework/Spring
@ControllerAdvice와 @ExceptionHandler 완전 정복도입 배경: 왜 전역 예외 처리가 필요한가?서비스를 운영하다 보면 예외는 피할 수 없는 현실입니다. 특히 웹 애플리케이션에서는 다음과 같은 요구가 자주 등장합니다:클라이언트에게 일관된 에러 응답 포맷을 제공해야 한다.추후에 API 스펙이 변경되면, 프론트엔드의 수정이 불가피하다.따라서 많은 부수효과가 발생한다.비즈니스 예외와 시스템 예외를 구분해서 다뤄야 한다.예외 발생 시 적절한 로그, 알람, 후속 처리를 구성해야 한다.컨트롤러마다 중복되는 try-catch를 제거하고 싶다.Spring은 이러한 요구를 해결하기 위해 전역 예외 처리 메커니즘을 제공합니다. 그 핵심은 @ControllerAdvice와 @ExceptionHandle..
[Spring][JPA] 스프링 데이터 JPA Auditing 심화편
·
Dev Framework/Spring
🚀 Spring Data JPA Auditing 심화편– 현업에서는 이렇게까지 활용합니다 1. 실전 예제: createdBy, updatedBy를 로그인 사용자로 자동 세팅하기AuditorAware를 구현할 때, 보통 로그인 사용자 정보를 가져와야 합니다.스프링 시큐리티를 쓰는 경우 이렇게 작성합니다.import org.springframework.data.domain.AuditorAware;import org.springframework.security.core.Authentication;import org.springframework.security.core.context.SecurityContextHolder;import org.springframework.stereotype.Component;i..
[Spring][JPA] 스프링 데이터 JPA Auditing 완전 정복
·
Dev Framework/Spring
🌟 스프링 데이터 JPA Auditing 완전 정복– 데이터의 생성과 변경을 자동으로 기록하는 가장 깔끔한 방법 1. Auditing이란 무엇인가?Auditing(감사, 기록)은 쉽게 말하면,"이 데이터가 언제 생성되었는지, 언제 수정되었는지, 누가 수정했는지를 자동으로 기록하는 기능"입니다.우리가 실제 서비스를 운영하다 보면, 거의 대부분의 테이블에 이런 칼럼들이 존재합니다.칼럼명의미created_at데이터가 처음 생성된 시간updated_at데이터가 마지막으로 수정된 시간created_by데이터를 처음 만든 사용자updated_by마지막으로 데이터를 수정한 사용자처음에는 직접 setCreatedAt() 하면서 채우겠지만,규모가 커지면 매번 이런 코드를 반복하는 것은 비효율적이고, 오타, 실수도 잦아..
[Spring][MAC] Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' 해결 방법
·
Dev Framework/Spring
오늘 lombok(롬복)을 사용하여 코드 간소화를 하기 위해 @ToString, @AllArgsConstructor 어노테이션을 사용하였으나, 다음과 같은 오류가 발생하였다. 이는 프로젝트에서 사용하고 있는 JDK가 21버전 이상이기에 발생하는 오류인데 JDK를 17로 수정해주면 해결된다. 이 글은 Mac 기준으로 작성되었으니 참고바란다. 오류 발생 오류 해결방법 1. File -> Project Structure 이동 2. SDK가 현재 JDK21 버전으로 설정되어있다. SDK를 JDK 17버전으로 수정해주자. 2-1 만일 JDK 17버전이 존재하지 않는다면 JDK17 버전을 다운로드 한 뒤 적용을 해주면 해결이 된다. 3. 성공적으로 실행이 된다.
개발자 성현
'Spring Boot' 태그의 글 목록