목차 1. 예외 처리 방식 2. Business Exception 1. 예외 처리 방식 오류 코드보다 예외를 사용하자. 오류 코드를 사용하는 것 보다 예외를 던지는 방식이 더 명확하고 메소드를 호출하는 코드와 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 Checked Exception을 발생시키고 상위 레벨에서는 예외를 catch 하여 처리하거나 메소드 선언부에 throws를 명시한다. Checked Exception은 예외에 대한 처리가 반드시 필요하기 떄문에 하위 레벨 메소드에서 Checked Exception을 발생시키면 catch 블록이 나오기 까지 모든 상위 레벨 메소드에서 throws 처리를 해주어야 한다. 결국 상위 레벨 메소드에서 하위 레벨 메소드의 디테일에 대해 알아야 하기 때문에 O..
목차 1. 컴포넌트 스캔과 의존관계 주입 2. 컴포넌트 스캔 3. 의존관계 자동 주입 1. 컴포넌트 스캔과 의존관계 주입 [Spring] 1. 스프링 컨테이너 예제에서는 AppConfig와 같이 설정 정보 클래스에서 빈과 의존관계를 설정해 주었다. 하지만 프로젝트 규모가 커지고 등록해야 할 스프링 빈이 많아지면서 수동으로 관리하기가 점점 복잡해진다. 그래서 스프링은 별도의 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. @Configuration @ComponentScan public class AutoAppConfig { } @Component public class OrderServiceImpl implements OrderService { private final..
목차 1. 자료구조 vs 객체 2. 객체 - 디미터 법칙 3. DTO 4. Active Record vs Data Mapper 1. 자료 구조 vs 객체 자료 구조(Data Structure) 객체(Object) 데이터 그 자체 비즈니스 로직과 관련 자료를 공개한다. 자료를 숨기고 추상화한다. 자료를 다루는 함수만 공개한다. 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다. (getter, setter) 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 예시 (1) Vehicle - 자료 구조 조회 함수와 설정 함수로 자료를 공개한다. public interface Vehicle { double getFuelTankCapacityInGallons(..
목차 1. DI 컨테이너 2. 스프링 컨테이너 3. 싱글톤 컨테이너 1. DI 컨테이너 회원을 생성하고 회원 등급에 따라 할인 정책을 적용해 상품에 대한 주문을 처리하는 서비스이다. 주문 서비스의 도메인 구조가 위와 같을 때, 회원 저장 역할은 데이터베이스가 변경됨에 따라 함께 변경될 수 있고 할인 정책 역할은 회원의 등급에 따라 다른 정책을 적용하는 등 변경 가능성이 높다. 다음과 같이 주문 서비스가 회원 저장소와 할인 정책의 구현체에 의존하면 확장에 의한 변경에 대응할 수 없게 된다. 코드를 보면 주문 서비스가 회원 저장소의 구현체인 MemoryMemberRepository와 할인 정책의 구현체인 FixDiscountPolicy에 의존하고 있다. 데이터베이스가 변경되거나 할인 정책이 변경되면 비즈니스..
- Total
- Today
- Yesterday
- named query
- spring rest docs
- MySQL
- H2
- 폴링 발행기 패턴
- HTTP 헤더
- kafka
- http
- 클린코드
- Spring Data JPA
- ATDD
- Ubiquitous Language
- 학습 테스트
- Stream
- 도메인 모델링
- Spring Boot
- 이벤트 스토밍
- 육각형 아키텍처
- java8
- mockito
- Spring
- Git
- 계층형 아키텍처
- clean code
- 마이크로서비스 패턴
- 스프링 예외 추상화
- JPA
- 스프링 카프카 컨슈머
- TDD
- 트랜잭셔널 아웃박스 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |