본문 바로가기

springboot9

@RequestBodyAdvice로 Spring API 데이터 전처리와 후처리 완벽히 관리하기 개요최근 프로젝트에서 JSON 형식의 데이터를 처리하는 API를 개발하게 되었는데, 데이터가 요청 본문(@RequestBody)으로 전달되는 상황을 자주 접하게 되었다. 대부분의 경우 Spring MVC의 기본적인 데이터 바인딩으로 충분했지만, 특정 요청 본문에 대해 데이터를 전처리하거나 예외 상황을 세밀하게 제어해야 하는 요구사항이 생겼다. 이때 유용하게 활용할 수 있는 기능이 바로 @RequestBodyAdvice였다. @RequestBodyAdvice란?@RequestBodyAdvice는 Spring에서 제공하는 인터페이스로, @RequestBody에 의해 바인딩되는 요청 데이터를 전처리하거나 후처리할 수 있는 기능을 제공한다. 특정 컨트롤러에 들어오는 요청 데이터를 한 곳에서 전처리 및 후처리할 .. 2024. 11. 5.
스프링부트 @ConfigurationProperties 매핑 오류(null) 얼마 전, 개인 프로젝트 진행 중 계정 관련 설정값을 application.yml 파일에 넣어둔 뒤 자바 객체로 받아와 사용하려고 한 적이 있었다. @Value 보다는 @ConfigurationProperties로 받아오면 객체형태로 받아올 수 있기 때문에 해당 방법을 통해 설정값을 받아오려고 했는데, 해당 값을 참조할 때마다 계속해서 NPE가 발생했다. 오늘은 해당 이슈에 대한 내용을 공유하려고 한다. 문제 상황이슈의 원인을 공유하기 전에 먼저, 어떤 상황에서 발생했는지를 공유하려고 한다. 나는 아래와 같이 yml 파일에 계정 정보 리스트를 넣어두었다.property: accounts: - name: test1 password: pw1 - name: test2 passwo.. 2024. 10. 15.
SpringBoot @Transactional이 동작하지 않는 이유와 해결법 개요예전에 개발 중 트랜잭션 처리가 자동으로 되지 않는 문제를 경험한 적이 있었다. 처음에 @Transactional 어노테이션을 사용하면 모든 트랜잭션이 알아서 처리될 것이라고 생각했었다. 하지만 예상대로 트랜잭션이 작동하지 않고, 데이터가 반영되지 않는 문제가 발생해 한참을 헤맸다. 결국, 트랜잭션이 동작하지 않는 다양한 이유를 알게 되었고, 그 해결 방법을 찾게 되었다. 이 글에서는 @Transactional이 왜 동작하지 않는지, 그리고 그 해결법을 예시와 함께 설명해보려고 한다.  @Transactional 기본 개념 @Transactional은 스프링 프레임워크에서 제공하는 어노테이션으로, 데이터베이스 작업에서 트랜잭션을 관리하는 데 사용된다. 트랜잭션이란 작업의 일련의 과정을 하나로 묶어주.. 2024. 10. 2.
Spring @RequestBody로 데이터 바인딩 오류 개요 Spring Boot를 사용해 REST API를 개발하면서, 클라이언트로부터 JSON 데이터를 받아 처리하는 상황이 빈번하다. 이때 @RequestBody 애너테이션을 사용해 데이터를 바인딩하는데, 간혹 데이터 형식이 맞지 않거나 잘못된 값이 들어오면 데이터 바인딩 오류가 발생할 수 있다.  최근 프로젝트에서도 비슷한 문제가 발생했는데, 이 과정에서 어떻게 오류를 해결하고 예방할 수 있는지에 대해 자세히 알아보게 되었다.  @RequestBody와 데이터 바인딩 오류의 이해 @RequestBody는 클라이언트로부터 전송된 JSON 데이터를 객체로 변환하는 역할을 한다. 예를 들어, 클라이언트에서 JSON 형식으로 데이터를 보내면, 해당 데이터를 Java 객체로 매핑해 사용할 수 있게 도와준다. 하.. 2024. 10. 1.