본문 바로가기

Til4

[TIL] 2025.12.25 TDD에 대한 학습 TDD란 무엇인가?TDD는 Test Driven Development로 "코드를 만들기 전, 먼저 어떻게 동작해야 하는지"를 테스트로 정의한다. 테스트하는 순서는 아래와같다Red -> Green -> RefactorRed: 실패하는 테스트를 작성Green: 최소 코드로 통과하는 테스트를 작성Refactor: 구조를 정리런던파와 고전파런던파와 고전파는 다음으로 분류된다.테스트에서 어디까지를 믿고, 어디까지를 가짜로 만들 것 인가?고전파고전파의 핵심 철학은 테스트는 실제 객체들이 함께 잘 동작하는지 확인해야 한다 이다.특징은 다음과 같다실제 객체를 사용Mock을 거의 사용하지 않는다상태(State) 기반의 검증구현 변경에 덜 민감실제 객체를 사용한다는 것은 진짜로 구현된 서비스 객체를 가져와서 사용하는 것이.. 2025. 12. 26.
[TIL] 2025.12.19 collect(Collectors.toList())와 toList()자바 Stream API를 사용하면서 알게 된 내용을 정리.collect(Collectors.toList()) -> Java 8부터 사용가능, 수정 가능한 리스트에 사용.toList() -> Java16부터 사용가능, 수정 불가능한 리스트에 사용사용 예제 코드List list1 = stream.collect(Collectors.toList());List list2 = stream.toList();두가지의 차이점은 수정 가능 여부가 크다List list = stream.collect(Collectors.toList());list.add("new"); // ✅ 가능List list = stream.toList();list.add("new.. 2025. 12. 20.
[TIL] 2025.12.18 카프카 리스너의 구조 알아보기@KafkaListener( topics = "order-events", groupId = "stock-consumer-group", containerFactory = "kafkaListenerContainerFactory" )1. topics = "order-events"Consumer가 구독 할 Kafka 토픽의 이름order-events 토픽을 메시지로 소비한다왜 필요한가?Kafka는 토픽 기반의 Pub/Sub 모델이기 때문이다Producer -> [order-events] -> Consumer이 값이 없다면 어떤 메시지를 들어야 할지 모르기 때문에 Consumer는 아무것도 못받는다토픽은 하나이상 가능하다topics = {"order-events".. 2025. 12. 18.
[TIL] 2025.12.10 @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)에 대한 정리1. @Transactional — 트랜잭션의 시작점Spring이 이 메서드를 만나는 순간:트랜잭션을 시작할지기존 트랜잭션을 이어 받을지새 트랜잭션을 만들지읽기 전용으로 동작할지커밋/롤백 조건은 무엇인지 를 경정하는 설정파일 같은 것2. propagation = Propagation.REQUIRES_NEW — 무조건 새로운 트랜잭션을 만들어라✔ REQUIRES_NEW = 기존 트랜잭션이 있어도 끊고, 새로운 트랜잭션을 반드시 만든다.REQUIRES_NEW를 언제 쓰나?-> 1) 결제/주문 후 알림, 로그, 이력은 무조건 남겨야 할 때메인 비즈니스(order)가 실.. 2025. 12. 10.