스프링 부트에서 Feign 클라이언트 사용하기: 파라미터 처리 방식 이해하기 이전 글에서 Feign 클라이언트를 사용하면서 컨트롤러에서 파라미터가 계속 null로 전달되어 어려움을 겪었다. 이부분에 대해서 정리를 좀 해야겠다. 스프링 부트에서 Feign 클라이언트를 사용할 때, 다양한 유형의 파라미터들을 전달하는 방법에 대해 알아보자. 주로 다룰 파라미터 유형에는 @RequestParam과 @RequestBody 등이 있다. 어노테이션은 Feign 클라이언트에서 HTTP 요청을 구성하는 데 중요한 역할을 한다. 1. Feign 클라이언트에서 @RequestParam 어노테이션 생략 시 발생 가능한 문제 1-1. 매핑 문제 설명 @RequestParam 없이 Long memberId와 같이 파라미터를 전달..
전체 글
하다보니 재미있는 AI에 빠져있는 평양냉면7 문의사항: ysoil8811@gmail.comMSA 환경에서 SNS/SQS 활용하기: 서버간 DB 동기화와 제로 페이로드 방식의 효과적 구현 이번 글은 회원 서버에서 SNS를 발행하면 이를 구독하는 외부 서버의 SQS가 어떻게 동작하는지에 대해 작성해 보겠다. 이번 내용은 이전 포스팅과 이어지는 내용이기 때문에 꼭 아래 글을 읽고 와주길 바란다. [Spring Boot]MSA 환경에서 SNS/SQS를 활용한 이벤트 처리: 이벤트 유실 문제 해결 방안 [Spring Boot]MSA 환경에서 SNS/SQS를 활용한 이벤트 처리: 이벤트 유실 문제 해결 방안 MSA 환경에서 SNS/SQS를 활용한 이벤트 처리: 이벤트 유실 문제 해결 방안 지난 시간에서 설명한 스프링 이벤트를 이제 실제로 프로젝트에 녹이는 과정을 설명하겠다. 이 글에서 다룰 내용은 ..
MSA 환경에서 SNS/SQS를 활용한 이벤트 처리: 이벤트 유실 문제 해결 방안 지난 시간에서 설명한 스프링 이벤트를 이제 실제로 프로젝트에 녹이는 과정을 설명하겠다. 이 글에서 다룰 내용은 해당 YouTube 영상에서 영감을 얻었다. (배달의 민족 - 권용근 연사님 발표 영상) 해당 영상은 MSA 아키텍처에서 하나의 시스템 안에 내부 프로세스가 어떻게 돌아가는지 설명해 준다. 나도 MSA 아키텍처는 처음 진행해 보기 때문에 이 영상에서 정말 많은 도움을 얻었고, 이를 바탕으로 내 프로젝트에 적용해 보기로 했다. (유튜브 링크: https://youtu.be/b65zIH7sDug?si=f5zNCpJbUEZcDPpr) 2022 우아콘 - 권용근 연사님 발표 영상 1. 영상 내용 요약 위 영상은 "회원시스..
제가 속한 사이드 프로젝트 팀과 팀원을 소개합니다. 지금까지 올리는 블로그 글의 내용들은 혼자서만 해낸 것들이 아니었습니다. 퇴사를 한 후에 팀원과 함께 진행 중인 프로젝트가 존재하는데 이 프로젝트를 직접 해보면서 겪은 내용들을 위주로 글을 작성하고 있습니다. 이렇게 블로그를 운영하던 도중에 팀원과 나온 얘기는 우리가 함께 작업을 하고 있다는 것을 알릴 수 있는 팀명과 로고를 만들어서 글 안에서 소개할 수 있었으면 좋겠다는 대화를 나눴습니다. 이에 팀원과 함께 팀명과 로고를 1달 이상 고민하던 도중 오늘 드디어 최종적으로 결정했습니다. 1. 팀명 소개 팀 이름은 'ChillWave'로 결정하였습니다. 팀 이름이 가진 의미를 소개합니다. 'Chill'은 여유롭고 편안한 분위기를, 'Wave'는 물결처럼 지..
Spring Framework 4.2 이후 버전에서 스프링 이벤트 적용하기 Spring Boot 3 버전에서 내부 로직 처리를 위해 Spring event를 사용해야 했다. 찾아보니 Spring Boot 3 버전에서 적용할 Spring event가 이전 버전과 꽤 다르다는 점을 알게 되어서 정리해 봐야겠다. 스프링 프레임워크에서 스프링 이벤트 처리 방식이 업데이트되면서 주요 변경 사항이 몇 가지 있다. 이러한 변경 사항은 개발자가 이벤트를 더 유연하고 효율적으로 다룰 수 있게 해 준다. 아래에서 이러한 차이점과 적용 방법을 자세히 설명하겠다. 4.2 버전 이전, 스프링 이벤트 스프링 프레임워크 4.2 버전에서의 스프링 이벤트 처리는 상당히 기본적이었다. 이때, 개발자들은 ApplicationEvent 클..
스프링 부트에서 파라미터화된 로깅{}과 String.format 사용법 Java의 로깅 시스템에서는 주로 두 가지 방식으로 로그 메시지를 포맷한다: 파라미터화된 로깅과 String.format을 사용하는 방법이다. 이 두 방법은 서로 다른 특징과 사용 케이스를 가지고 있다. 각각의 특징과 차이점을 알아보자! 1. {}를 사용하는 방법 SLF4J에서 제공하는 로그 메시지 형식화 방법이다. 로그 레벨이 활성화되지 않은 경우, 파라미터로 전달된 객체들의 toString() 메소드가 호출되지 않는다. 이는 성능상 이점을 제공한다. 즉, 불필요한 문자열 연산이 발생하지 않는다. 그러나 로그 레벨이 변경될 때 로그 출력 내용도 달라질 수 있다는 점을 이해해야 한다. 가독성이 좋다. 로그 메시지와 파라미터가 분리되어..
AOP를 활용한 로깅 구현: @EnableAspectJAutoProxy와 사용자 정의 Aspect 클래스 비교 가이드 스프링 부트 프로젝트에 로직의 이해를 돕기 위해 AOP를 로깅에 적용하는 방법에 대해서 설명해 보겠다. 1. 왜 AOP를 로깅에 사용하는가? 문제 인식 복잡한 애플리케이션에서는 다양한 프로세스와 로직이 수행된다. 이를 추적하고 이해하기 위해 로깅은 필수적이다. AOP의 역할 AOP(Aspect-Oriented Programming)는 공통 관심 사항(예: 로깅, 보안, 트랜잭션 관리 등)을 애플리케이션의 핵심 로직으로부터 분리하여 관리할 수 있게 해 준다. 이를 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 한다. 로깅에 AOP 적용 로깅은 여러 클래스와 메소드에 걸쳐 반복적으로 필..
Quartz 적용하기 스프링 부트와 쿼츠를 활용하여 매일 새벽 세시에 회원 테이블을 조회해서 마지막 로그인 시점이 6개월보다 이전이면 휴면 계정으로 처리하는 프로세스를 작성해 보자. 0. 쿼츠의 작동 방식 쿼츠 스케줄러는 작업을 주기적으로 실행하는 데 사용되는 강력한 라이브러리로, 여러 핵심 컴포넌트와 개념을 가지고 있다. 쿼츠의 작동 방식을 이해하려면 다음 개념들을 알아야 한다: Job: 정의: Job은 쿼츠가 실행할 작업을 정의한다. 특징: 사용자는 Job 인터페이스를 구현하고, execute() 메서드 안에 작업 내용을 정의한다. 역할: execute() 메서드는 스케줄러에 의해 트리거 될 때 호출된다. JobDetail: 정의: JobDetail은 Job의 인스턴스를 나타내며, Job에 대한 정보..