Spring 4

@PathVariable 엔드포인트 매핑 원리

서론최근에 회사일을 하며 파일 다운로드 기능에 대해 리팩터링이 진행되었는데, 기존에 @PathVariable로 수행되었던 API 엔드포인트가 변경되면서 정상적으로 동작하지 않던 문제를 확인했습니다. 이에 관해 @PathVariable에 어떤 로직이 숨어있는지 알아보고자 합니다.문제 파악문제가 발생한 코드 다음은 문제가 발생하기 이전 코드에 대한 예시입니다. fileName을 PathVariable 어노테이션을 사용해서 받아왔습니다.@RequiredArgsConstructor @RestController public class DownloadController { private final DownloadService downloadService; @GetMapping("/before/file/{fileNa..

Spring 2024.10.12

Redis, 그리고 Spring 에서 Redis 활용

서론Redis가 제공하는 기능 중 알고 있는 내용은 간단하게 정리하고, 직접 구현해보지 않았거나 두리뭉실하게 알고 있는 내용들에 대해 예제 코드를 작성하여, Redis에서 제공하는 기능들을 더 적극적으로 활용하고자 글을 쓰게 되었습니다.Redis에 대해Redis는 무엇인가?Redis는 인메모리 기반의 key-value DB입니다. MySQL과 같은 관계형 데이터베이스와 비교했을 때, 관계가 존재하지 않고 단순히 key 하나에 value 하나를 저장할 수 있습니다. 또한 인메모리 기반이기 때문에 디스크에 쓰고 읽는 것이 아닌, 메모리에서 데이터를 처리하게 됩니다. 메모리에서 데이터를 처리함으로써 빠른 연산을 통해 Redis를 캐시 서버로 사용할 수 있습니다.Redis 사용 시 주의점1.  메모리 관리Red..

Spring 2024.09.07

ChainedTransactionManager, JtaTransactionManager

서론여러 개의 DataSource를 다루고 있을 때, 트랜잭션 매니저를 다룰 수 있는 한 가지 방법인ChainedTransactionManager에 대해 알아보고 어떤 문제점이 있는지 찾아본 후, 이를 해결하기 위한 방법 중 하나인 JtaTransactionManager에 대해 다뤄보고자 합니다.Chained TransactionManagerChainedTransactionManager란ChainedTransactionManager는 말그대로 여러 개의 트랜잭션을 묶어서 사용할 수 있는 TransactionManager 입니다. 그렇기 때문에 여러 개의 DataSource를 다룰때 여러개의 TransactionManager를 활용하여 트랜잭션을 시작하고 끝내는 작업을 하나의 TransactionManag..

Spring 2024.07.17

AWS Presigned URL로 트래픽 낮추기

서론 2022년, 팀 프로젝트를 할 때 일기 쓰기 기능에서 이미지 저장을 다음과 같이 구현했었습니다. 클라이언트에서 업로드 하려는 파일을 서버에 전달 서버는 전달받은 파일을 S3에 저장 S3에 저장 후 리턴되는 이미지 경로를 DB에 저장 여기서 저는 '이미지 업로드를 클라이언트에서 할 수 있지 않을까?' 라는 의문점이 들었습니다. 다만 그때는 깊이 생각해보지 못했고, 현재 다시 의문에 대한 해결책인 PresignedURL을 소개해 드리려고 합니다. 소개 및 사용 이유 Presigned URL은 AWS 에서 제공하는 기능으로, 이름 그대로 미리 서명된 URL을 활용하여 AWS S3에 객체를 업로드할 수 있습니다. 즉 Presigned URL을 활용하면 누구든 객체를 업로드 할 수 있습니다. AWS Pres..

Spring 2024.03.28