@EventListener, @TransactionalEventListener 설에 따른 이벤트 동작 방식
·
Java & Spring
안녕하세요 이번 포스팅에서는 이벤트 리스너 어노테이션에 대해 다루고자 합니다. 도입하여 사용하게된 계기는 다음과 같았습니다.1. 메인 비지니스 로직과 알림과 같은 부가적인 로직의 분리 - 알림 발송에 대한 처리2. 분리를 통한 결합도 낮춤 및 확장 가능한 설계3. @Async 도입을 통해 비동기 처리로 퍼포먼스 향상 그럼 스프링에서 제공하는 @EventListener, @TransactionalEventListener를 통해 어떤 경우에 어떻게 동작하는지 정리해 보겠습니다. 1. @EventListener이벤트를 publish 해주는 곳에서 PostCreatedEventFail 타입으로 발행해주면 해당 타입으로 리스너가 구성되어 있는 메소드는수행되게 됩니다EventListener 안에 별도로 class ..
Awaitility로 비동기 이벤트 테스트 하기: Spring @Async와 함께 쓰는 법
·
Java & Spring
Awaitility란 무엇인가?Awaitility는 단순히 "조건을 만족할 때까지 기다리는" 라이브러리입니다. 자바의 while 루프나 Thread.sleep을 사용하지 않고, 안정적으로 polling 하며 조건이 만족될 때까지 기다립니다. 비동기 테스트 도입 계기Spring에서 @Async 와 같이 비동기적으로 수행되는 코드를 테스트할 때 가장 어려운 점은 "테스트 메소드가 먼저 종료되어 비동기 로직이 미처 수행되지 못하는 것"입니다. Thread.sleep() 으로 기다리는 방식 보단 적절한 시간을 두고 polling 으로 완료가 되면 종료되는게 더 효율적이라 판단하였습니다. 기본 사용법await().atMost(5, SECONDS) .until(() -> someService.getSta..
Spring Cloud Config 도입기: 구성부터 실시간 설정 반영까지
·
Java & Spring
이번 포스팅에서는 Spring Cloud Config 설정에 대해 다루고자 합니다.사용하게된 이유와 그리고 어떤 이점이 있었는지 다시 한 번 정리해보고자 합니다. Spring Cloud Config 란?"Spring Cloud Config는 마이크로서비스 환경에서 분산된 설정 관리를 중앙에서 할 수 있도록 도와주는 구성 관리 도구입니다." 1. 도입 배경1. 장점 공통 설정의 중앙 집중화 - 여러 서버에서 사용하는 설정을 Git에 저장하여 하나의 Config Server로 통합 관리할 수 있습니다.무중단 설정 변경 - 설정 변경 시 애플리케이션을 재시작하지 않아도 `/actuator/refresh` 엔드포인트를 통해 실시간으로 반영할 수 있습니다. ex) rabbitMQ 에서 사용하는 q..
Spring Rest Docs 적용 2 - Swagger 연동
·
Java & Spring
지난번 마지막 포스팅을 한 후 한참이 지나서야 다시 포스팅을 하게 됐습니다. 그래도 시작한 거에 대해 마무리를 지어야 하니 개인적으로 정리했던 내용들을 블로그에 다시 정리해 보려 합니다! 앞 포스팅은 다음 링크에 있으니 아직 확인하지 못하신 분들은 먼저 읽으신 후에 현재 포스팅을 읽어주시면 감사하겠습니다! Spring Restdocs 적용plugins { id 'java' id 'org.springframework.boot' version '3.3.4' id 'io.spring.dependency-management' version '1.1.6' id "org.asciidoctor.jvm.convert" version "3.3.2"}도입하게된 이유테스트코드 작성을 하고 결과물을 통해 문서작성jaes..