728x90 TIL16 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. Optional.ifPresentOrElse로 자바의 조건 분기 깔끔하게 처리하기 개요자바에서 Optional은 널 값 처리와 관련된 문제를 효과적으로 해결해주는 유용한 클래스이다. 최근 프로젝트에서 Optional을 사용하다가 값을 조건에 따라 다르게 처리해야 하는 상황을 만났다. 기존에는 if-else 구문으로 처리했지만, Java 9부터 추가된 ifPresentOrElse 메서드를 사용하니 훨씬 깔끔하고 가독성이 좋아졌다. 이번 글에서는 ifPresentOrElse의 사용법과 활용 사례를 정리해보려고 한다. Optional.ifPresentOrElse란?Optional.ifPresentOrElse는 Optional에 값이 존재할 때와 존재하지 않을 때의 처리를 각각 지정할 수 있는 메서드이다. 이 메서드는 다음과 같은 구조를 가진다:public void ifPresentOrEls.. 2024. 11. 19. 오라클 SQL 성능 개선하기: 스칼라 서브쿼리 vs 인라인 뷰 개요최근 운영하고 있는 서비스에서 각 회원별 입출금 내역을 바탕으로 월단위 유형별 입출금 내역을 조회해야 할 일이 생겼다. 또한 해당 내역에 더해 매 월 초에 배치로 기록하는 회원별 충전금 보유량도 함께 보여주어야 했는데, 이를 위해 사용한 서브쿼리가 성능에 큰 영향을 주어 쿼리를 개선해야만 했다. 이번 포스트에서는 쿼리를 개선하는 과정에 대해 정리한다. 기존 쿼리 - 스칼라 서브쿼리아래는 맨 처음 요구사항을 만족하기 위해 작성한 쿼리이다.SELECT user_id, transaction_month, (SELECT balance FROM bill_stat bs WHERE bs.user_id = ba.user_id AND bs.month = b.. 2024. 11. 11. @RequestBodyAdvice로 Spring API 데이터 전처리와 후처리 완벽히 관리하기 개요최근 프로젝트에서 JSON 형식의 데이터를 처리하는 API를 개발하게 되었는데, 데이터가 요청 본문(@RequestBody)으로 전달되는 상황을 자주 접하게 되었다. 대부분의 경우 Spring MVC의 기본적인 데이터 바인딩으로 충분했지만, 특정 요청 본문에 대해 데이터를 전처리하거나 예외 상황을 세밀하게 제어해야 하는 요구사항이 생겼다. 이때 유용하게 활용할 수 있는 기능이 바로 @RequestBodyAdvice였다. @RequestBodyAdvice란?@RequestBodyAdvice는 Spring에서 제공하는 인터페이스로, @RequestBody에 의해 바인딩되는 요청 데이터를 전처리하거나 후처리할 수 있는 기능을 제공한다. 특정 컨트롤러에 들어오는 요청 데이터를 한 곳에서 전처리 및 후처리할 .. 2024. 11. 5. 이전 1 2 3 4 다음