DEV ℧ Developer Diary

[EffectiveJava] item52 - 다중정의(Overloading)는 신중히 사용하라

다중정의(Overloading)란 매개변수를 다르게 한다면 메소드의 이름을 같게하여 정의하는것을 말한다.

다중정의(Overloading)

먼저 예시를 살펴보자.

public class CollectionClassifier { public static String classify(Set<?> s) { return <span...

[EffectiveJava] item51 - 메서드 시그니처를 신중히 설계하라

이번 아이템에서는 API 설계 요령들을 정리한 회차이다. 이 요령들을 잘 활용하면 배우기 쉽고, 쓰기 쉬우며, 오류 가능성이 적은 API를 만들 수 있다.

메서드 이름을 신중이 짓자.

항상 표준 명명 규칙을 따라야 한다. 이해할수 있고, 같고 패키지에 속한 다른 이름들과 일관되게 짓는게 최우선 목표다.

그다음...

[Java] Jackson 역직렬화 이해하기 2: List가 LinkedHashMap이 되는 이유

이전 글에서는 Jackson ObjectMapper를 이용해 객체를 JSON으로 직렬화하고, JSON을 다시 객체로 역직렬화하는 기본 흐름을 살펴봤다.

이번 글에서는 실제로 겪었던 ClassCastException 문제를 다룬다.

FeignClient로 다른 서비스의 회원 목록을 조회하고 있었다. 응답은 정상적으로 내려왔고, data 필드에도 값이 들어 있었다. 그런데...

[Java] Jackson 역직렬화 이해하기 1: ObjectMapper 기본 사용법

Java에서 객체를 외부 시스템과 주고받을 때 가장 자주 사용하는 형식 중 하나가 JSON이다.

Spring Boot로 API를 만들다 보면 요청 JSON은 DTO로 들어오고, 응답 DTO는 다시 JSON으로 내려간다. 이 과정은 대부분 자동으로 처리되기 때문에 평소에는 크게 신경 쓰지 않는다.

하지만 실제로는 내부에서 Java 객체와 JSON 사이의...

[Java] 분산 락(Distributed Lock)을 이용해 동시성 제어하기

분산 락(Distributed Lock)을 이용해 동시성 제어하기

분산 락

기존 이전 포스트에서 설명한 Datebase Lock과는 다른 방식으로 작동을 한다.

락을 거는 것은 같으나, 자원에 직접 락을 거는 것이 아닌 공통된 저장소에 락을 걸어 자원이 사용중인지를 체크하고, 사용 뮤무에 따라 프로세스를 진행하는 방식이다.

<h2…