Back-end
-
Legacy code에 Lombok 적용은 지양하자Back-end/Java 2024. 2. 7. 14:50
소개 오래 전부터 워낙 유명해서 Lombok을 사용하지 않는 곳이 없을 정도이다. 그러나 이번에 오랜 코드의 보일러 플레이트 코드들을 제거하기 위해서 Lombok을 도입했다. 하는 김에 Setter 구문을 제거하는 작업도 진행하였다. 코드만 보기에는 너무 깔끔하고 유지/보수가 편하다고 생각했었다. 그러나 QA 기간이 들어가면서 생각지도 못한 부분에서 에러들이 계속 발생하고 나를 괴롭혔다.. 만약 Legacy Code에 Lombok을 도입하고 싶은 분들이라면 아래 내용을 참고해서 고민해봤으면 한다.. 문제상황 1: Boolean 형식의 DTO 아래의 예시를 보면 boolean 형식의 get 메서드는 어떤 형태로 생성될까? @NoArgsConstructor @AllArgsConstructor @Getter ..
-
Enum 사용 중 Attribute value must be constant 발생Back-end/Java 2024. 2. 5. 20:25
개요 업무 중 Worker 구조를 Annotation 기반으로 변경하는 부분에서 아래와 같은 부분이 있었다. @WorkerTask(value = "externaldb-task", threadCount = 10) value의 String을 Enum의 속성으로 대체하려했다. 그러나 컴파일 에러가 발생했다. public enum TaskDefinitionNames { EXTERNAL_DB_TASK("externaldb-task"), ... public String getNameValue() { return nameValue; } } 메세지는 "Attribute value must be constant" 였다. 이유가 뭘까? 이유 TaskDefinitionNames.EXTERNAL_DB_TASK.getNameV..
-
Java Stream Custom Collection 구현하기Back-end/Java 2024. 1. 29. 14:18
이번 주제는 자바 8부터 지원하는 Custom Stream 구현하기 관한 주제입니다. 소개 자바 8이 등장하며 많은 자바 개발자들이 Stream을 사용한다. Stream의 강점은 간결하고 가독성이 좋은 코드를 만들 수 있고 Immutable한 동작을 보장한다. 복잡한 코드 파이프라인을 구성하는 경우 어렵게 코드를 구성해야한다. 이러한 문제를 해결할 수 있는 방법이 Custom stream이다. Collector Interface Interface Collector - T: 변환 및 집계가 필요한 입력 타입 - A: 중간 결과(변형이 가능한) 타입 - R: 결과에 대한 리턴 타입 인터페이스 제공 메서드 - supplier(): 새로운 결과를 생성함. - accumulator(): 변형된 데이터를 모으는 ..
-
Micrometer custom metric 생성하기Back-end 2024. 1. 28. 13:47
개요 Micrometer provides a simple facade over the instrumentation clients for the most popular observability systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for application observability! Data recorded by Micrometer are intended to be used to observe, alert, and react to the current/recent operational state of your environment. 업무를 하며 워크..