스프링 트랜잭션 전파 속성별로 실습 해보기
·
Spring
📍 배경인프런 강의 중 김영한님의 "스프링 DB 2편" 을 공부하던 중, 트랜잭션 전파에 대해 공부하다가 각 전파 속성별로 실습을 하고 싶다는 생각을 했습니다.실무에서는 `REQUIRED` , `REQUIRES_NEW` 를 주로 사용한다고 하지만 각 속성별로 어떤 시나리오에서 사용하게 되는지 가정을 해보고 직접 코드를 작성해보며 각 속성별의 차이를 이해하기 위해 실습을 진행하였습니다.📍 트랜잭션 전파란?트랜잭션이 둘 이상 있을 때 어떻게 동작할지 결정하는 것을 트랜잭션 전파라고 합니다.예를 들어, 트랜잭션이 이미 진행 중인 상태에서 새로운 트랜잭션 메서드를 호출했을 때 기존 트랜잭션에 참여할지, 새로운 트랜잭션을 생성할지, 트랜잭션 없이 실행할지 등을 결정하는 것이 전파 속성입니다. 트랜잭션을 이해하..
@SpringBootTest, 순수 스프링 컨테이너, @TestConfiguration 정리
·
Spring
SpringBoot에서 테스트코드를 작성하면서 경험한 오류들로 이 포스팅을 작성하게 되었습니다`@SpringBootTest` vs 순수 스프링 컨테이너의 비교와 `@TestConfiguration`에 대해 추가 설명을 작성했습니다 ✅ @SpringBootTest - 통합 테스트의 완전체주요 특징전체 애플리케이션 컨텍스트 로드: 실제 운영 환경과 동일한 조건으로 모든 빈을 로드모든 설정 클래스 스캔: @Configuration, @Component 등 모든 설정을 자동으로 읽음application.properties 자동 로드: 운영 설정 파일을 그대로 사용AutoConfiguration 자동 적용: Spring Boot의 자동 설정 기능 활용🚩 '전체', '모든' 키워드에 집중해야 합니다. 운영코드, ..
Spring Cloud Gateway와 WebFlux 관계 이해하기 (2편)
·
Spring
개인프로젝트를 하던 중 Webflux에서 발견한 문제점과 해결 과정을 공유합니다📍 배경2025.05.06 - [Spring] - Spring Cloud Gateway와 WebFlux 관계 이해하기 (1편) 이전 1편에서는 WebFlux의 기본 개념과 Spring Cloud Gateway가 WebFlux 기반인 이유에 대해 다뤘습니다2편에서는 Spring Cloud Gateway 환경에서 발생할 수 있는 블로킹 이슈와 해결 방법, 그리고 Netty와 Tomcat의 아키텍처 차이점에 대해 더 자세히 알아보겠습니다📍 Spring Cloud Gateway 환경에서 발생한 블로킹 이슈초기 상황Spring Cloud Gateway(이하 SCG)를 사용하면서 프론트엔드 코드가 클라이언트와 가깝다는 이유로 SCG ..
Spring Cloud Gateway와 WebFlux 관계 이해하기 (1편)
·
Spring
개인프로젝트를 하던 중 Webflux에서 생긴 궁금증 입니다.📍 배경처음 개인 프로젝트를 시작했을 때는 모놀리식 구조로 개발했습니다. 객체지향프로그래밍과 JPA에 집중하기 위해서 입니다. 3개의 도메인(고객,예매,SMS) 개발이 어느 정도 틀이 잡힌 이후에는 MSA로의 전환을 결정했습니다. MSA로 전환하는 과정에서는 기존에 유튜브를 보고 MSA 실습을 했던 터라 Spring Cloud Gateway와 Microservice 어플리케이션들을 이미 구현해 놓은 상태였습니다. 서비스를 도메인 기준으로 분리한 이후, 머스타치 파일(View)을 어디로 분리해야하나 고민하다가 Client와 가까운 Gateway 어플리케이션에 넣고 컨트롤러 패키지도 추가해서 각 마이크로 서비스랑 통신해서 데이터를 가져오려고 했습..
Spring Cloud Gateway에서 라우팅 설정 방법
·
Spring
유튜브에서 “개발자 유미”님의 스프링 클라우드 MSA강의를 듣던 중 “게이트웨이 지역 필터” 파트에서 생긴 궁금증입니다.📍 배경Spring Cloud Gateway에는 2가지의 라우팅 설정이 가능합니다application.properties (또는 application.yml)을 사용하는 방법Java Config (@Configuration + RouteLocator) 클래스를 사용하는 방법저는 application.properties 로도 실습을 진행하였고 Java Config 클래스로도 실습을 진행하였습니다.어플리케이션에는 마지막에 실습한 Java Config 클래스로 작성이 되어 있는 상태에서 게이트웨이 지역 필터를 작성하게 됩니다.그런데 지역필터 작성 시 application.properties..
Spring Cloud Gateway 동적 라우팅 추가시 Lambda 표현식
·
Spring
유튜브에서 “개발자 유미”님의 스프링 클라우드 MSA강의를 듣던 중 “게이트웨이 라우팅 추가” 파트에서 생긴 궁금증입니다.🌐 Spring Cloud Gateway의 특성Spring Cloud Gateway는 가장 앞단에서 Public Endpoint 역할을 하기 때문에 서비스를 시작한 후 절대 멈추면 안된다. 게이트웨이가 중단되면 모든 서비스 접근 경로가 차단되기 때문에 항상 가동 상태를 유지 해야한다. 이러한 특성 때문에 새로운 마이크로 서비스(새로운 경로)가 추가될 경우 게이트웨이를 재시작하는 대신 Postman을 통해 Spring Cloud Gateway에 동적으로 라우팅을 추가하는 방식을 사용한다.⚙️ 기존 라우팅 설정 상태처음에는 "jisutudy" 어플리케이션(포트8081)에 대해 /sms/..
Spring Cloud Gateway로 마이크로서비스 라우팅 시 발생하는 404 오류의 원인과 해결책
·
Spring
유튜브에서 “개발자 유미”님의 스프링 클라우드 MSA강의를 듣던 중 “게이트웨이 라우팅 설정” 파트에서 생긴 이슈입니다.📍 배경Spring Cloud Gateway를 통해 마이크로서비스로 라우팅하는 실습을 진행했다구성은 다음과 같다Config 서버 : GitHub 저장소에 설정 파일 관리Config 클라이언트(마이크로서비스) : 2개의 스프링 부트 어플리케이션jisutudy-dev : 포트 8081ms2-dev : 포트 8082Spring Cloud Gateway : 포트 8080   Config 서버에 각 클라이언트 포트번호를 담기위한 properties 파일이다  각 마이크로서비스의 설정 파일에다가 포트 번호를 작성했다   각 마이크로서비스는 Config Server에서 부여받은 포트로 직접 접근 ..
Spring Cloud Config Client 설정 후 포트번호가 변경되지 않을 때
·
Spring
유튜브에서 “개발자 유미”님의 스프링 클라우드 MSA강의를 듣던 중 “Config 클라이언트 설정” 파트에서 생긴 이슈입니다.📍 배경Config 서버를 정상적으로 구축한 후, Config 클라이언트 설정을 완료한 뒤 클라이언트 엔드포인로 접속을 시도했지만 GitHub 리포지토리에 설정한 포트번호(8081)로 변경이 되지 않는 문제가 발생했다.Config 서버(http://localhost:9000/jisutudy/dev)로 접속 → 성공Config 클라이언트(http://localhost:8081/)로 접속 → 실패기존에 연결되던 8080포트에서만 정상적으로 웹사이트 로딩동일한 오류를 재현했으나, 같은 설정을 적용해도 새로운 오류가 발생하여 스크린샷을 확보하지 못함📍 원인Spring Cloud Ver..