๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐฑ์—”๋“œ/ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

Feign Client ์—์„œ ์‘๋‹ต ๋ฐ›์„ ๋•Œ Jackson ์—ญ์ง๋ ฌํ™” ์ด์Šˆ

by sh119 2025. 4. 21.

โœ… ๋ฌธ์ œ ์ƒํ™ฉ 

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 ์„ค์ •์„ ํ†ตํ•ด ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถฐ์ฃผ์–ด์•ผ ์—ญ์ง๋ ฌํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค!