명명패턴보다 애너테이션을 사용하라 JUnit은 버전 3까지 테스트 메서드 이름을 test로 시작하게끔 하였습니다. 🧨 단점 오타에 취약합니다. JUnit 3버전에서는 테스트 메서드명을 tsetSafeOverride로 지어버리면 무시하고 테스트를 진행하지 않습니다. 올바른 프로그램 요소에서만 사용되리라는 보장이 없습니다. 메서드가 아닌 클래스명을 TestSafeOverride로 지어 내부의 메서드가 테스트되길 기대할 수 있지만 JUnit은 클래스명에는 관심이 없으므로 테스트가 실행되지 않습니다. 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없습니다. 특정 예외를 던져야 발생하는 테스트가 있다는 가정하에 기대하는 예외 타입을 테스트에 매개변수로 전달해야하는데 방법이 마땅치 않습니다. 💡 해결책 - 애너테..
팩토리 메서드 패턴이란? 객체를 생성하기 위한 인터페이스를 정의하고 어떤 클래스의 인스턴스를 생성할지에 대한 처리는 서브 클래스가 결정하는 디자인패턴입니다. new 키워드를 호출해 객체를 생성하는 역할을 서브 클래스에 위임하는 것입니다. 그렇기 때문에 팩토리 메서드 패턴은 객체를 만들어 내는 공장 패턴이라 할 수 있습니다. 클래스의 인스턴스를 만드는 일은 서브 클래스에게 맡깁니다. 클래스 다이어 그램 💡 다양한 구현체(Product)가 있고, 그중에서 특정한 구현체를 만들 수 팩토리(Creator)를 제공할 수 있습니다. 💡 Product 인스턴스 생성시 큰 틀을 결정하는 추상 클래스 및 인터페이스입니다. 구체적인 내용(구현부)은 ConcreteProduct에서 결정합니다. 💡 ConcreteProduc..
확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 열거 타입 자체는 확장할 수 없지만, 인터페이스와 인터페이스를 구현하는 열거 타입을 통해 시너지를 낼 수 있습니다. 💡 타입 안전 열거 타입 JDK 1.5 이전에 Enum이 없을 때 사용하던 방식입니다. @ToString public class Direction { private final String location; public static final Direction NORTH = new Direction("NORTH"); public static final Direction SOUTH = new Direction("SOUTH"); public static final Direction EAST = new Direction("EAST"); p..
비트 필드 대신 EnumSet을 사용하라 비트 필드란 비트별 OR을 사용해 여러 상수를 하나로 모은 집합을 말합니다. 💡비트 필드 클래스 예제 아래와 같은 비트 필드 열거 상수가 있다는 가정하에 text.applyStyles(STYLE_BOLD | STYPE_ITALIC); 이처럼 만들어진 집합을 비트 필드라고 합니다. 이러한 비트 필드를 사용하면 비트 연산을 사용해 합집합과 교집합 같은 집합 연산을 효율적으로 수행할 수 있습니다. 문제점 정수 열거 상수의 단점을 그대로 가지고 있습니다. 비트 필드 값이 그대로 출력되면 해석하기 어렵습니다. 비트 필드 하나에 녹아 있는 모든 원소를 순회하기도 까다롭습니다. 최대 몇 비트가 필요한지 API작성 시 미리 예측해 적절한 타입을 선택해야합니다.(ex: int o..
- Total
- Today
- Yesterday
- spring boot redisson sorted set
- 서비스 기반 아키텍처
- redis sorted set으로 대기열 구현
- transactional outbox pattern
- pipeline architecture
- spring boot excel download paging
- space based architecture
- microkernel architecture
- redis 대기열 구현
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- java userThread와 DaemonThread
- spring boot redisson destributed lock
- 트랜잭셔널 아웃박스 패턴 스프링부트
- service based architecture
- redis sorted set
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot redisson 분산락 구현
- spring boot redis 대기열 구현
- 자바 백엔드 개발자 추천 도서
- transactional outbox pattern spring boot
- spring boot 엑셀 다운로드
- @ControllerAdvice
- spring boot excel download oom
- spring boot poi excel download
- 람다 표현식
- 레이어드 아키텍처란
- pipe and filter architecture
- java ThreadLocal
- 공간 기반 아키텍처
- polling publisher spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |