728x90 전체 글69 부모 @BeforeEach가 무시된다고? 메서드 오버라이드의 함정 개요최근 테스트 코드를 작성하다 공통적인 초기화 로직을 부모 클래스의 @BeforeEach에 두고, 자식 클래스에서 이를 상속받아 사용하도록 구성하였다. 그런데 예상과 다르게 부모의 @BeforeEach는 수행되지 않고 자식의 @BeforeEach 메서드만 수행되어 예외가 발생하게 되었고, 이번 글에서는 해당 현상의 이유에 대해 정리한다. 문제 상황이해를 위해 다음과 같이 문제가 발생했던 코드를 간략화하여 표현해 보았다. 추상 부모 클래스 BaseTest와 이를 상속한 자식 클래스 ChildTest가 있다고 가정한다.abstract class BaseTest { protected String testData; @BeforeEach void setUp() { testData =.. 2025. 8. 30. 왜 console.log는 내가 찍은 값이 아닌 바뀐 값이 보일까? 개요Javascript로 개발을 하다 보면 가장 자주 사용하는 기능 중 하나가 console.log 이다. 서버에서 내려준 응답 값을 확인하거나, 디버깅을 위해 중간 결과를 출력할 때 없어서는 안 될 도구이다. 그런데 최근 개발 중 위 기능이 예상과 다르게 동작하는 것을 발견했다. 서버에서는 a라는 값을 내려주었고, 프론트에서 해당 값을 변경하기 전에 console.log를 찍었으나 브라우저의 개발자도구를 통해 확인한 값은 변경된 값이 보였다. 이번 글에서는 이러한 현상이 왜 발생하는지, 어떻게 의도한 대로 값을 확인할 수 있는지 정리한다. 문제 상황다음은 이해를 돕기 위한 간단한 예시 코드이다.fetch("/api/data") .then(res => res.json()) .then(data => {.. 2025. 8. 30. Java 동시성 이슈를 해결할 수 있는 방법 - Lock 개요최근 동시성 처리에 대한 관심이 생겨 자바에서 동시성 이슈를 처리하는 방법에 대해 공부해 보았고, 일부 내용을 정리해 두려고 한다. 각 방법별로 테스트를 위해 간단한 재고 감소 로직을 구현해 테스트하였다. 재고 감소 테스트 코드이번 글에서는 동시성을 해결할 수 있는 방법 별로 실제 동시성이 해결되는지를 확인하기 위해. 간단한 재고 감소 코드를 작성하여 테스트하였다. 재고 감소를 위해 Stock이라는 엔티티를 생성한 뒤, 주어진 id에 해당하는 재고를 quantity만큼 감소시키는 아래 메서드를 작성하여 테스트하였다.@Transactionalpublic void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).o.. 2025. 7. 31. 자바 Stream peek()이 skip된다? 개요운영 업무를 처리하는 도중, 특정 api 호출 시 성공 응답을 받지만 실제 데이터를 확인해 보면 관련 데이터의 변화가 없다는 문의가 들어왔다. 실제로 로그를 확인해 보니 성공 응답이 리턴되었고, 서비스 로그 상 예외 로그도 발견되지 않았다. 이번 포스트에서는 해당 이슈를 트래킹 하는 과정과 그 과정에서 알게 된 자바 stream의 peek()에 대해 정리해 본다. 원인 파악로그 확인우선 api를 호출한 프로세스의 로그와 응답한 프로세스의 로그를 함께 확인해 보았다. 해당 기능은 기능이 정상 수행되면 변경된 데이터의 수를 리턴해주는데, api 호출 프로세스에서는 해당 데이터를 정상적으로 수신했다. 또한 응답 프로세스에서도 요청 인입 시에 기록되는 로그를 확인할 수 있었고, 예외 로그 또한 찍히지 않았다.. 2025. 7. 15. 이전 1 2 3 4 ··· 18 다음