본문 바로가기
728x90

springboot10

Gradle의 api와 implementation의 차이: 효과적인 의존성 관리 개요회사에서 스프링 부트 프로젝트 버전업 업무를 진행하며 Gradle 버전까지 함께 올려야 할 일이 생겼다. 기존에는 Gradle 5 버전을 사용했는데 8 버전으로 올리며 자료조사를 하던 중 기존 방식과 차이를 발견하여 해당 내용을 정리한다. Gradle은 3.4 버전부터 api와 implementation이라는 새로운 키워드를 도입하며 의존성 관리 방식을 개선했다. 이전에는 compile이라는 단일 키워드로 모든 의존성을 처리했지만, 빌드 성능 최적화와 의존성 관리의 명확성을 위해 compile은 Gradle 7.0에서 완전히 deprecated(사용 중단)되었다. 이번 글에서는 Gradle의 api와 implementation의 차이를 알아보고, 각각을 언제 어떻게 사용하는지 정리해 보려고 한다. a.. 2024. 11. 22.
@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.