โ ๋ฌธ์ ์ํฉ
record ๊ธฐ๋ฐ ํด๋์ค์์ ํ๋๋ช ์ด ๋ค๋ฅธ ์ด์๊ฐ ์๊ฒจ์ Feign Client ์๋ต ํ์ฑ์ด ์คํจํ๋ ์ด์๊ฐ ์๊น
public record OrderCreateResponse(
UUID orderId, // feign client์์๋ id ๋ผ๋ ํ๋๋ช
์ผ๋ก ์๋ตํ๊ณ ์์
UUID productId,
Long userId,
...
) {}
โ ์์ธ
record๋ ๋ชจ๋ ํ๋๊ฐ final์ด๊ณ ์์ฑ์๋ฅผ ์์์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋๋ฌธ์, Jackson์ด ์์ฑ์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์ ์ ์์ด ๋งคํ ์คํจํจ
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ฑ์์ @JsonProperty ์ด๋ ธํ ์ด์ ์ ๋ฌ์์ ์ง์ ๋ช ์๋ฅผ ํด์ฃผ๋ฉด ๋จ
public record OrderCreateResponse(
@JsonProperty("id")
UUID orderId,
UUID productId,
Long userId,
...
) {}
(์ด๋, Jackson ๋ฒ์ ์ด ๋ฎ๊ฑฐ๋, IntelliJ์์ ์ธ์์ด ์๋๋ ๊ฒฝ์ฐ์๋ ํด๋์ค ๋๋ record ์์ @JsonCreator ์ด๋ ธํ ์ด์ ์ ๋ฌ์์ฃผ์ด์ผํจ.)
โจ ๊ฒฐ๋ก
Feign Client ์ ์๋ต DTO๋ Jackson ์ค์ ์ ํตํด ์ ํํ๊ฒ ๋ง์ถฐ์ฃผ์ด์ผ ์ญ์ง๋ ฌํ๊ฐ ๊ฐ๋ฅํ๋ค!