목록전체 글 (287)
개발자는 기록이 답이다
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dBWHnJ/btsFKJ5RR0X/3GdkKVM2jKrT0o36s2U2KK/img.png)
프로젝트를 진행하면서 열심히 테스트를 하는 중인데, 갑자기 아래 에러가 발생하면서 테스트가 되지 않았습니다. com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction 락을 기다리다가 타임아웃을 초과했다고 나오는데, 해당 이슈를 해결하기 위해 아래 명령어를 사용했습니다. SHOW FULL PROCESSLIS; 현재 데이터베이스에서 실행중인 모든 스레드와 해당 스레드가 현재 실행중인 쿼리에 대한 정보를 반환하는 메소드입니다. 해당 명령어를 사용하면 MySQL 서버에서 실행 중인 모든 작업을 볼 수 있으며, 각 작업의 상태 및 해당 작업이 수행 중인 쿼리에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bspH1P/btsFJAm338a/5bhQustqLctInejBzDbTk1/img.png)
프로젝트를 진행하면서 단위테스트에 대한 트러블 슈팅 과정을 적어보겠습니다. 테스트 코드 작성을 제대로 작성하면 간단하게 풀리는 내용이었지만, 그 과정에서 고민했던 내용들을 복기하면서 실수를 방지하고자 합니다. 1. private 메소드를 테스트하려고 하는 이유 해당 메소드들은 상위 메소드에서 호출되는 메소드들입니다. 그래서 findEvent()메소드, findCoupon()메소드를 '단위 테스트'목적으로 아래처럼 작성했었어요. 우선 맥락을 이해하기위해 설명하자면, 기존에는 상위메소드에서 @Transactional이 걸려있으면, 하위메소드에서 해당 트랜잭션에 참여하기 위해 @Transactional을 걸어줘야 한다고 생각했습니다. 왜냐하면 @Transactional을 사용하면Propagation.REQUI..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CCvLu/btsFoFPZ9ru/kb0A8LnwIE0zxdPhED6gp1/img.png)
Spring WebFlux Handler Methods: 핸들러 메서드 Spring WebFlux에서 핸들러 메서드는 HTTP 요청을 처리하고 응답을 생성하는 핵심 역할을 수행합니다. 이러한 핸들러 메서드를 어떻게 작성하고 활용하는지에 대한 내용을 살펴보겠습니다. 1. 핸들러 메서드의 기본 구조 Spring WebFlux의 핸들러 메서드는 주로 리액티브 프로그래밍에 기반하여 비동기적으로 동작합니다. 기본적으로는 Mono 또는 Flux와 같은 리액티브 타입을 반환하도록 설계되어 있습니다. import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; imp..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cS4dzl/btsFn8EHx0H/M0wDQDeLMRcmCC2s2AvJdk/img.png)
Spring WebFlux Annotated Controllers: 어노테이션 기반 컨트롤러 Spring WebFlux에서는 전통적인 서블릿 기반의 어노테이션 컨트롤러와 마찬가지로 어노테이션 기반 컨트롤러를 사용하여 웹 애플리케이션을 개발할 수 있습니다. 이러한 어노테이션 기반 컨트롤러를 사용하면 비동기 및 리액티브한 웹 애플리케이션을 쉽게 개발할 수 있습니다. 1. 어노테이션 기반 컨트롤러의 특징 @Controller 어노테이션: Spring WebFlux에서도 컨트롤러 클래스에 @Controller 어노테이션을 사용하여 해당 클래스를 컨트롤러로 지정할 수 있습니다. @RequestMapping 어노테이션: URL 패턴 및 HTTP 메서드에 대한 매핑을 지정할 수 있는 @RequestMapping 어노..