2025/03 5

Command 패턴

1️⃣ Command 패턴이란? Command 패턴은 요청(명령)을 객체로 캡슐화하여 실행, 취소, 저장 등을 관리할 수 있도록 하는 디자인 패턴즉, "어떤 작업을 실행하는 코드"를 하나의 객체로 만들고, 이를 실행/취소/보관할 수 있도록 하는 패턴 📍 Command 패턴의 핵심 개념명령을 객체(Command)로 만들어 독립적으로 다룸명령을 실행하는 대상(Receiver)과 실행을 요청하는 객체(Invoker)를 분리 명령을 저장하고 나중에 실행 가능Undo(실행 취소) 기능을 쉽게 구현2️⃣ Command 패턴의 구조Command 패턴은 다음과 같은 5가지 주요 컴포넌트로 구성🔹 1. Command (명령 인터페이스)실행할 작업을 정의하는 인터페이스모든 명령은 execute() 메서드를 구현실행 취..

Java/Spring 2025.03.17

Spring에서 @Transactional

Spring에서 @Transactional은 AOP(Aspect-Oriented Programming)를 사용하여 트랜잭션을 처리 @Transactional의 동작 방식AOP Proxy 생성:Spring은 @Transactional이 선언된 메서드나 클래스에 대해 AOP 프록시를 생성이 프록시는 원래의 메서드를 감싸는 대리 객체로, 실제 메서드 호출 전에 트랜잭션을 시작하고 메서드 실행 후에 트랜잭션을 커밋하거나 롤백트랜잭션 시작:트랜잭션을 관리하는 AOP 프록시는 메서드 호출 전에 트랜잭션을 시작이때 트랜잭션 관리자는 데이터베이스 연결을 확보하고, 트랜잭션 상태를 관리메서드 실행:AOP 프록시가 실제 메서드를 호출이 메서드는 비즈니스 로직을 처리트랜잭션 커밋 또는 롤백:메서드 실행이 성공적으로 완료되면..

Java/Spring 2025.03.12

Proxy 패턴

Proxy Pattern은 객체에 대한 접근을 제어하기 위해, 해당 객체를 감싸는(즉, 대리 객체) 역할을 하는 디자인 패턴 - 실제 객체에 직접 접근하는 대신 프록시 객체를 통해 간접적으로 접근- 프록시 객체는 실제 객체를 대신해 특정 작업을 수행하거나, 실제 객체에 대한 접근을 제어 가능 - 초기화 지연, 접근제어, 로깅, 캐싱 등 다양하게 사용 가능프록시 패턴의 구조Subject: 실제 객체가 구현해야 하는 인터페이스- 프록시 객체와 실제 객체가 공유하는 공통의 인터페이스로, 프록시 객체는 이 인터페이스를 구현RealSubject: 실제로 기능을 수행하는 객체- Subject 인터페이스를 구현하여, 실제 비즈니스 로직을 처리Proxy: Subject 인터페이스를 구현- 실제 객체에 대한 접근을 제어..

Java/Spring 2025.03.12

Mock 관련 Annotations

@MockMockito의 Mock 객체 생성단순한 Mock 객체를 생성하지만, 의존성 주입은 자동으로 하지 않음메서드 호출 시 기본적으로 null 또는 기본값을 반환@Mockprivate lateinit var emailService: EmailService // Mock 객체 생성@Testfun testEmailSending() { `when`(emailService.sendEmail("test@example.com")).thenReturn("Success") val result = emailService.sendEmail("test@example.com") assertEquals("Success", result) // 반환값 검증} Mock 객체만 생성되고, UserService 등..

이것저것 2025.03.03

단위 테스트 Test Double

Test Double테스트에서 실제 객체를 대체하는 모든 종류의 객체를 의미하는 포괄적인 개념Test Double의 종류 Dummy - 아무것도 하지 않는 깡통 객체 (예: null 리턴, 빈 객체) Fake - 단순한 형태로 동일한 기능은 수행하나, 프로덕션에서 쓰기에는 부족한 객체 (ex, FakeRepository) Stub - 테스트에서 요청한 것에 대해 미리 준비한 결과를 제공하는 객체그 외에는 응답하지 않는다. Spy - Stub이면서호출된 내용을 기록하여 보여줄 수 있는 객체일부는 실제 객체처럼 동작시키고 일부만 stubbing 할 수 있다.-간단한 로직을 포함하여 동작하는 객체 Mock - 행위에 대한 기대를 명세하고, 그에 따라 동작하도록 만들어진 객체   Stub 과 Mock 은 다르다..

이것저것 2025.03.03